连接到另一个SQL Server的T-SQL语法是什么?

时间:2020-03-06 14:38:34  来源:igfitidea点击:

如果需要将存储过程(SP)从一台SQL Server复制到另一台SQL Server,请右键单击SSMS中的SP,然后选择"脚本存储过程为>创建到>新查询编辑器窗口"。然后,我通过右键单击该窗口并选择"连接">"更改连接...",然后选择新服务器和F5在新服务器上运行创建,来更改连接。

所以我的问题是"连接到另一个SQL Server的T-SQL语法是什么?"这样我就可以将其粘贴到create脚本和F5的顶部以运行它,它将切换到新服务器并运行create脚本。

在输入问题时,我意识到,如果我为我们尝试做的事情提供了背景知识,我们可能会想出一种更快更好的方法来实现这一目标。

解决方案

尝试创建链接服务器(可以使用sp_addlinkedserver进行操作),然后使用OPENQUERY

更新:要连接到另一个sql服务器并执行sql语句,必须使用sqlcmd实用程序。通常,这是在批处理文件中完成的。
如果要在Management Studio中执行,可以将其与xmp_cmdshell结合使用。

一种方法是配置链接服务器。然后我们可以将链接的服务器和数据库名称添加到表名称上。 (从链接服务器.database.dbo.TableName中选择*)

USE master
GO
EXEC sp_addlinkedserver 
    'SEATTLESales',
    N'SQL Server'
GO

另外,请确保在编写涉及链接服务器的查询时,包括如下方括号:

SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]

我发现至少在2000/2005上,[]括号是必需的,至少在服务器名称的周围。

如果我要换个问题,是否有可能在DDL中选择服务器上下文来执行查询,答案是否定的。只能使用USE以编程方式选择数据库上下文。 (已经在外部预先选择了服务器上下文)

链接服务器和OPEN QUERY可以提供对DDL的访问权限,但需要对代码进行一些重写以封装为字符串,从而使开发/调试变得困难。

或者,我们可以求助于外部驱动程序来拾取SQL文件,以通过OPEN QUERY发送​​到远程服务器。但是,在大多数情况下,我们也可能直接在第一位置连接到服务器以评估DDL。

如果可能,请签出SSIS(SQL Server集成服务)。我只是用这个工具包弄湿了,但是已经循环了40多个服务器,并准备造成各种破坏;)

在SQL Server Management Studio中,从"查询"菜单中打开SQLCMD模式。
然后在脚本顶部,输入以下命令

:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]

如果要连接到多台服务器,请确保在连接之间插入" GO"。否则,T-SQL将不会在我们认为会在服务器上执行。