Я видел некоторые решения о том, как создавать таблицы на связанных серверах, используя 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 [linkedsnamename], но каждый время я пытаюсь сделать имя сервера переменной, котор оно терпит неудачу для меня.
Я могу запустить все эти команды вручную в Query Analyzer, но всякий раз, когда я пытаюсь сделать имя связанного сервера переменной, для меня это не получается. То, что я пытаюсь сделать что-то вроде этого ...
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. Для других платформ я не смогу помочь. –