在 SQL Server 中以"use <<master db of a link server >> go "指定链接服务器的 master 数据库



我只是想知道如何在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 输出。

最新更新