2
我已經看到了一些關於如何使用EXEC('some sql') AT [LINKED_SERVER_NAME]
在鏈接服務器上創建表的解決方案,並且它們可以手動工作。如何在具有可變服務器名稱的鏈接服務器上創建表格?
我可以使用DML查詢,如
EXEC ('select * from [' + @DbServerName + '].[' + @DbName + '].dbo.someTable')
我該怎麼辦了DDL查詢類似像
EXEC ('CREATE TABLE [' + @DbServerName + '].[' + @DbName + '].dbo.someTable (id int null) ')
我已經與SELECT * FROM OPENQUERY(linkedservername玩弄左右,查詢)和exec(sql)AT [linkedservername],但每個我嘗試讓服務器名稱變成一個變量,但對我來說卻失敗了。
我可以在查詢分析器中手動運行所有這些命令,但每當我嘗試將鏈接服務器名稱變爲變量時,它們都會失敗。我想要做的就是這樣的事情...
DECLARE @LinkedServerName nvarchar(100)
DECLARE @LinkedDbName nvarchar(100)
SET @LinkedServerName = 'SVR2'
SET @LinkedDbName = 'DB2'
DECLARE @DDL_QUERY nvarchar(1000)
SET @DDL_QUERY = 'CREATE TABLE [' + @LinkedDbName + '].dbo.T1 (id int null)'
-- Current failed ideas
EXEC(@DDL_QUERY) AT @LinkedServerName
SELECT * FROM OPENQUERY(@LinkedServerName, @DDL_QUERY)
EXEC('CREATE TABLE [' + @LinkedServerName + '].[' + @LinkedDbName + '].dbo.T1(id int null)'
是否可以動態創建一個表時,鏈接服務器名稱和鏈接服務器上數據庫名稱都聲明變量?
嵌套調用sp_execsql ......很漂亮。謝謝! :-) –
當LinkedDbName在EDW環境中時,我該如何設置它? – angelcake
@angelcake和HP EDW一樣嗎?對不起,不知道。這是有效的,因爲假設鏈接服務器也是SQL Server。對於其他平臺,我無法提供幫助。 –