获得远程数据库信息的存储过程

Create Procedure [dbo].[GetProductList]
     @DataBase_InsertUser varchar(50),
     @DataBase_ID varchar(50)
AS
 DECLARE @DataBase_Address varchar(50) --------------远程数据库地址
 DECLARE @DataBase_LoginName varchar(50)-----------登录名
 DECLARE @DataBase_DBS varchar(50)--------------------数据库名
 DECLARE @DataBase_Table varchar(50)---------------------表名
 DECLARE @DataBase_PassWord varchar(50)--------------密码
BEGIN
 SET @DataBase_Address=''
 SET @DataBase_LoginName=''
 SET @DataBase_DBS=''
 SET @DataBase_Table=''
 SET @DataBase_PassWord=''
 ---获取最新数据时先把本地旧数据删除
 delete FROM ProductInfo Where  PI_DataBase=@DataBase_ID
 ---从本地获得已存在的服务器信息
 select @DataBase_Address=[DataBase_Address],@DataBase_LoginName=[DataBase_LoginName],
 @DataBase_DBS=[DataBase_DBS],@DataBase_Table=[DataBase_ProTable],
 @DataBase_PassWord=[DataBase_PassWord]  
 FROM DataBaseInfo WHERE [DataBase_DelFlag]=0
 AND [DataBase_ID]=@DataBase_ID
 ----将远程数据库信息存储到本地
 declare @s varchar(8000)
 set @s='INSERT INTO ProductInfo  SELECT
 [PI_ID],'+@DataBase_ID+'
 '+@DataBase_InsertUser+',GETDATE(),[PI_OrderNum],[PI_IsTrue],[PI_Clicks],[PI_Best],[PI_Hot],[PI_LinkProduct]
 FROM 
    OPENROWSET 
    (''sqloledb'','''+@DataBase_Address+''';'''+@DataBase_LoginName+''';'''+@DataBase_PassWord+''','+@DataBase_DBS+'.DBO.'+@DataBase_Table+')'
 exec (@s)
END

posted @ 2009-04-29 16:49  非常菜鸟  阅读(142)  评论(1编辑  收藏  举报