2010-05-03 103 views

回答

15
exec 

('CREATE TABLE DatabaseName.dbo.TableName 
(
    column1 datatype, 
    column2 datatype, 
    column3 datatype 
)') at [LinkedServer] 
+0

這不適合我。未能通過 消息7411,級別16,狀態1,行1 服務器'MyLinkedServer'未配置爲RPC。 – brewmanz 2016-11-29 02:12:26

+0

老問題,但正如沒有人回覆的,這裏是錯誤的解決方案:「'MyLinkedServer'未配置爲RPC」。 – 2017-01-10 15:27:52

+0

exec解決方案不會將「Create table」語句作爲SQL語句發送到鏈接服務器。它將它作爲一個字符串發送,然後在遠程服務器上作爲一個過程執行。 RPC錯誤是因爲鏈接的服務器連接程序。默認不允許你執行遠程程序。要解決此問題:打開鏈接服務器上的專有名稱。在[服務器選項]頁面上,將RPC和RPC輸出選項設置爲true。我在屏幕截圖中添加了一篇文章。 – 2017-01-10 15:34:09

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 
+0

這對我來說失敗了:Msg 7411,Level 16,State 1,Line 5 Server'MyLinkedServer'未配置爲RPC。 – brewmanz 2016-11-29 02:17:14

1

從Arpit解決方案的工作很好。

exec 

('CREATE TABLE DatabaseName.dbo.TableName 
(
    column1 datatype, 
    column2 datatype, 
    column3 datatype 
)') at [LinkedServer]; 
go 

如何過,當你的錯誤 「消息7411,級別16,狀態1,行1服務器 'MyLinkedServer' 未配置爲RPC。」您需要更改鏈接服務器連接上的RPC參數。由於默認RPC設置爲false。它需要設置爲true。

Linked server options

這允許您運行鏈接服務器上的程序。 您必須允許這樣做,因爲解決方案不會將「Create table」語句作爲SQL命令發送到鏈接服務器。它將該語句作爲字符串發送,然後在遠程服務器上作爲一個過程執行。

希望這會有所幫助。

相關問題