什么是连接到另一个SQL Server的T-SQL语法?
如果我需要将存储过程(SP)从一个SQL Server复制到另一个SQL Server,则右键单击SSMS中的SP,然后select脚本存储过程为> CREATE>新查询编辑器窗口。 然后,通过右键单击该窗口并select连接>更改连接…,然后select新服务器和F5在新服务器上运行创build,从而更改连接。
所以我的问题是“什么是连接到另一个SQL Server的T-SQL语法?” 以便我可以将其粘贴到创build脚本的顶部,然后使用F5来运行它,然后切换到新的服务器并运行创build脚本。
在input问题的时候,我意识到,如果我把你想要做的事情给了你的背后,那么你可能会想出一个更快,更好的方式来完成这个任务。
此外,请确保在编写涉及链接服务器的查询时,可以包含如下所示的括号:
SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]
我发现至less在2000/2005 []括号是必要的,至less在服务器名称周围。
在SQL Server Management Studio中,从查询菜单打开SQLCMD模式。 然后在脚本的顶部,input下面的命令
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]
如果连接到多个服务器,请确保在连接之间插入GO
; 否则你的T-SQL将不会在你想要的服务器上执行。
更新:用于连接到另一个sql服务器并执行sql语句,您必须使用sqlcmd实用程序 。 这通常是在batch file中完成的。 如果你想在management studio中执行它,你可以把它和xmp_cmdshell结合起来。
一种方法是configuration一个链接的服务器 。 那么您可以将链接的服务器和数据库名称追加到表名中。 (select * from linkedserver.database.dbo.TableName)
USE master GO EXEC sp_addlinkedserver 'SEATTLESales', N'SQL Server' GO
如果我想解释一下这个问题 – 是否可以在DDL中select查询执行的服务器上下文 – 答案是否定的。 只有数据库上下文可以用USE以编程方式select。 (已经预先select了外部的服务器上下文)
链接服务器和OPEN QUERY可以访问DDL,但是需要重写代码以封装为string,这使得开发/debugging变得困难。
或者,您可以诉诸外部驱动程序来获取SQL文件,通过OPEN QUERY发送到远程服务器。 但是在大多数情况下,您可能还是直接连接到服务器以评估DDL。
每当我们试图从另一台服务器上检索任何数据时,我们需要两个步骤。
第一步:
-- Server one scalar variable DECLARE @SERVER VARCHAR(MAX) --Oracle is the server to which we want to connect EXEC SP_ADDLINKEDSERVER @SERVER='ORACLE'
第二步:
--DBO is the owner name to know table owner name execute (SP_HELP TABLENAME) SELECT * INTO DESTINATION_TABLE_NAME FROM ORACLE.SOURCE_DATABASENAME.DBO.SOURCE_TABLE
尝试创build一个链接的服务器(您可以使用sp_addlinkedserver ),然后使用OPENQUERY
如果您连接到多个服务器,则应在切换服务器之前添加“GO”,否则您的sql语句将针对错误的服务器运行。
例如
:CONNECT SERVER1 Select * from Table GO enter code here :CONNECT SERVER1 Select * from Table GO
在我的C盘我首先创build一个txt文件来创build一个新的表。 你可以在这个文本文件中使用你想要的东西
在这种情况下,文本文件被称为“Bedrijf.txt”
内容:
Print 'START(A) create table' GO 1 If not EXISTS ( SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Bedrijf' ) BEGIN CREATE TABLE [dbo].[Bedrijf] ( [IDBedrijf] [varchar] (38) NOT NULL , [logo] [varbinary] (max) NULL , [VolledigeHandelsnaam] [varchar] (100) NULL ) ON [PRIMARY]
保存
然后我创build一个名为“Bedrijf.bat”和扩展bat的其他txt文件。 这是内容:
OSQL.EXE -U Username -P Password -S IPaddress -i C:Bedrijf.txt -o C:Bedrijf.out -d myDatabaseName
保存并从资源pipe理器双击执行
结果将被保存在名为“Bedrijf.out”的C驱动器上的txt文件中
表明
1> 2> 3> START(A) create table
如果一切顺利
而已
如果可能,请查看SSIS(SQL Server集成服务)。 我只是用这个工具箱弄湿了我的脚,但是已经在超过40多台服务器上循环,准备造成各种各样的破坏;)