什么是T-SQL法连接到另一个SQL服务器?
-
02-07-2019 - |
题
如果我需要复制一个存储程序(SP)从一个SQL服务器到另一个我右击SP在短程和选择脚本存储的过程>创建新的编辑查询窗口。然后我改变连接,通过正确的点击窗口和选择连接>的变化连接...然后选择的新的服务器和F5运行创建新的服务器。
所以我的问题是"什么是T-SQL法连接到另一个SQL服务器上?"所以我可以贴,在创造的剧本和F5运行,它将切换到新的服务器和运行创造脚本。
同时输入问题,我意识到,如果我给你回地面对什么我想要做的,你可能会想出了一个更快和更好的办法了我要完成这一任务。
解决方案
此外,请确保在编写涉及链接服务器的查询时,包括如下括号:
SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]
我发现至少在2000/2005年,[]括号是必要的,至少在服务器名称附近。
其他提示
在SQL Server Management Studio中,从“查询”菜单中启用SQLCMD模式。 然后在脚本的顶部,输入以下命令
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]
如果要连接多台服务器,请务必在连接之间插入 GO
; 否则你的T-SQL将无法在你认为的服务器上执行。
更新:要连接到另一个sql server并执行sql语句,你必须使用 sqlcmd实用程序。这通常在批处理文件中完成。 如果您愿意,可以将其与 xmp_cmdshell 结合使用在管理工作室内执行。
一种方法是配置链接服务器。然后,您可以将链接服务器和数据库名称附加到表名称。 (从linkedserver.database.dbo.TableName中选择*)
USE master
GO
EXEC sp_addlinkedserver
'SEATTLESales',
N'SQL Server'
GO
如果我要解释的问题-这可能选择服务器上查询执行在言-答案是没有。仅数据库方面可编程方式选择与使用。(具有已预先选定的服务器上下文外)
链接的服务器和开放的查询可以得到访问言,但需要稍微重写代码封作为a string-使它难以制定/调试。
或者你可以诉诸外部驱动程序取SQL文件发送到远程服务器通过公开查询。然而在大多数情况下可能以及具有连接服务器直接在第1次地方评估言.
每当我们尝试从另一台服务器检索任何数据时,我们需要两个步骤。
第一步:
-- 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
如果要连接多台服务器,则应在切换服务器之前添加“GO”,否则sql语句将针对错误的服务器运行。
e.g。
:CONNECT SERVER1
Select * from Table
GO
enter code here
:CONNECT SERVER1
Select * from Table
GO
尝试创建链接服务器(可以使用 sp_addlinkedserver )然后使用 OPENQUERY
我首先创建一个txt文件来创建一个新表。您可以在此文本文件中使用您想要的内容
在这种情况下,文本文件被称为“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]
保存
然后我创建了一个名为“Bedrijf.bat”的其他txt文件。和扩展球棒。 它的内容是:
OSQL.EXE -U Username -P Password -S IPaddress -i C:Bedrijf.txt -o C:Bedrijf.out -d myDatabaseName
保存并从资源管理器中双击执行
结果将保存在C盘上的txt文件中,名称为“Bedrijf.out”
显示
1> 2> 3> START(A) create table
如果一切顺利
就是这样
如果可能,请查看SSIS(SQL Server Integration Services)。我刚刚用这个工具包弄湿了,但已经在40多台服务器上循环并准备发生各种各样的破坏;)
尝试PowerShell类型:
$cn = new-object system.data.SqlClient.SQLConnection("Data Source=server1;Initial Catalog=db1;User ID=user1;Password=password1");
$cmd = new-object system.data.sqlclient.sqlcommand("exec Proc1", $cn);
$cn.Open();
$cmd.CommandTimeout = 0
$cmd.ExecuteNonQuery()
$cn.Close();