是否可以在链接服务器上创建表?
答案 0 :(得分:18)
exec
('CREATE TABLE DatabaseName.dbo.TableName
(
column1 datatype,
column2 datatype,
column3 datatype
)') at [LinkedServer]
答案 1 :(得分:3)
Arpit的解决方案运行良好。
exec
('CREATE TABLE DatabaseName.dbo.TableName
(
column1 datatype,
column2 datatype,
column3 datatype
)') at [LinkedServer];
go
然而,当您收到错误“Msg 7411,级别16,状态1,第1行服务器'MyLinkedServer'未配置为RPC时。”您需要更改链接服务器连接上的RPC参数。默认情况下,RPC设置为false。它需要设置为true。
这允许您在链接服务器上运行过程。 您必须允许此操作,因为解决方案不会将“Create table”语句作为SQL命令发送到链接服务器。它将语句作为字符串发送,而该字符串又作为远程服务器上的过程执行。
希望这有帮助。
答案 2 :(得分:1)
如果您使用的是SQL Server Management Studio和SQLCMD模式:
-- To enable "SQLCMD mode" in SQL Server Management Studio (SSMS):
-- In the menu toolbar: Query > SQLCMD mode
:setvar LinkedServer "YourLinkedServerNameHere"
:setvar DestinationDb "YourDestinationDatabaseNameHere"
GO
EXEC ('
CREATE TABLE $(DestinationDb).dbo.YourTableNameHere (
[Field1] INT NOT NULL,
[Field2] INT NOT NULL
)
') AT $(LinkedServer)
GO
EXEC ('DROP TABLE $(DestinationDb).dbo.YourTableNameHere') AT $(LinkedServer)
GO