我只是想知道如何在SQL Server的USE
中包含链接服务器的主数据库。我执行了下面的查询,但它产生并出错:
USE [192.168.1.2].master
GO
在生成上面的代码之前,我已经使用此工作查询创建了链接服务器
DECLARE @TargetServer varchar(255) = '192.168.1.2'
IF EXISTS(SELECT * FROM sys.servers WHERE name = @TargetServer)
EXEC master.sys.sp_dropserver @TargetServer, 'droplogins'
ELSE
BEGIN
EXEC sp_addlinkedserver
@server = @TargetServer,
@provider = N'SQLNCLI',
@datasrc = N'tcp:192.168.1.2',
@srvproduct = N'',
@catalog = N'master';
EXEC sp_addlinkedsrvlogin
@rmtsrvname = @TargetServer, -- has to match the server name in sp_addlinkedserver
@useself = N'False',
@rmtuser = 'LapuLapu',
@rmtpassword = 'HunkNgMactan';
END
GO
谢谢你,我将感谢每一个回复。
附言对不起我的英语语法
所有
链接服务器的第一拳已经"查看"master
数据库。
如果要在查询中使用来自其他数据库的某些对象,只需使用完全限定的对象名称,如下所示:
select *
from [192.168.1.2].db1.dbo.tab1 join [192.168.1.2].db2.dbo.tab2
...
如果您仍想在代码中使用use
,则可以使用 exec ...at ...
传递到 exec()
您想要的所有内容:
exec ('use my_db; select db_name()') at [192.168.1.2]
在最后一种情况下,应将链接服务器配置为 RPC 输出。