2000与2005对比:在SQL Server 2000版本中也有链接远程DB的SQL,但是功能比较弱,扩展性差,支持的查询比较简单。而SQL Server 2005版本的SSMS中已经有了 %ignore_a_1%对象->链接服务器的功能点,用户首先创建一个远程DB的链接对象,之后就可以像本地表一样执行表的DML了。
创建步骤:在SQL Server 2005版本打开SSMS,服务器对象->链接服务器->右击 新建链接服务器,在图2中是一种设置方式,也有其它的设置方式,比如:,图3是安全性选项中设置远程数据库的账号和密码。
USE[master] GO EXEC master.dbo.sp_serveroption @server=N‘ETV2_LINK‘, @optname=N‘rpc‘, @optvalue=N‘true‘ GO EXEC master.dbo.sp_serveroption @server=N‘ETV2_LINK‘, @optname=N‘rpc out‘, @optvalue=N‘true‘ GO
—注意:是sys.objects不是sysobjects —判断远程用户是否存在某张表 IFEXISTS (SELECT*FROM ETV2_LINK.[etV2_Online].sys.objects WHERE name = N‘VisiteLog_20100629‘AND type in (N‘U‘)) BEGIN —逻辑处理 print‘存在表‘ END
—判断远程用户是否存在某张表(参数化表名),返回变量 DECLARE@IsExistTableVARCHAR(10) DECLARE@TablenameVARCHAR(50) DECLARE@sqlStringNVARCHAR(4000) SET@IsExistTable=‘False‘ SET@Tablename=‘VisiteLog_‘+convert(varchar(9),getdate()–1,112) —例如VisiteLog_20100629 SET@sqlString= ‘IF EXISTS (SELECT * FROM ETV2_LINK.[etV2_Online].sys.objects WHERE name = N”’+@Tablename+”’ AND type in (N”U”)) set @IsExistTableOUT =”True”’ EXEC sp_executesql @sqlString,N‘@IsExistTableOUT varchar(10) OUTPUT‘,@IsExistTableOUT=@IsExistTable OUTPUT
IF (@IsExistTable=‘True‘)—存在 BEGIN —逻辑处理 print‘存在表‘ END