2015-10-15 1 views
0

я получил одну проблему, в то время как вставки данных из одной БД в другуювставки данных из одной базы данных в другую базу данных динамически

ниже мой код:

INSERT 
INTO myarchivedb.dbo.tblStoreOrderArchive 
(
     [StoreOrderId] 
     ,[CompanyId] 
     ,[SiteId] 
) 
SELECT StoreOrderId 
    ,CompanyId 
    ,SiteId 
FROM mycurrentdb.dbo.tblStoreOrder 

Приведенный выше код работает отлично, но myarchivedb и mycurrentdb будет периодически меняться. как это сделать динамически с использованием переменной.

+0

Как писал там далеко не достаточно информации, чтобы обеспечить реальный ответ здесь. Почему вы думаете, что можете сделать это с переменной? Здесь отличное место для начала. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

Я хочу сделать, как это DECLARE \t @name nvarchar (512) = 'myarchivedb' INSERT INTO [@ имя + .dbo.tblStoreOrderArchive] ( \t \t \t [StoreOrderId] \t \t, [CompanyID] \t \t, [SiteId] ) ВЫБРАТЬ \t StoreOrderId \t \t, CompanyID \t \t, SiteId FROM \t mycurrentdb.dbo.tblStoreOrder – user2841480

+0

Как вы не можете узнать имя базы данных или таблицы? Для этого вам придется использовать динамический sql. Будьте очень осторожны, так как это имеет высокий риск быть уязвимым для SQL-инъекции. –

ответ

0

вы можете попробовать, как этого

declare @db1 nvarchar(99) = 'myarchivedb.dbo.tblStoreOrderArchive'; 
declare @db2 nvarchar(99) = 'mycurrentdb.dbo.tblStoreOrder'; 

-- make sure your query and syntax is correct 
PRINT ('INSERT INTO ' + @db1 + 
'([StoreOrderId] ,[CompanyId] ,[SiteId]) SELECT StoreOrderId ,CompanyId ,SiteId FROM ' + @db1) 

EXEC ('INSERT INTO ' + @db1 + 
'([StoreOrderId] ,[CompanyId] ,[SiteId]) SELECT StoreOrderId ,CompanyId ,SiteId FROM ' + @db1) 
+0

моя процедура очень огромная, и я потеряю отступ. Я хочу сделать это с помощью переменной .concact переменная с tablename .. но она не работает – user2841480

+0

@ user2841480 если мы должны проходить объект DB динамически, тогда мы динамически передаем параметр и будем использовать динамический запрос – wiretext

+0

, можем ли мы сделать это с использованием концепции псевдонима – user2841480

Смежные вопросы