Обновить таблицу базы данных с одной таблицы базы данных SQL Server на другую? - PullRequest
8 голосов
/ 20 июня 2011

Я пытаюсь обновить поля базы данных из одной таблицы SQL Server в другую.

Наш производственный SQL Server [spdbprod.test.com\spprod], наш сервер QA [spdbQA.test.com\spQA].

обновление таблицы в производстве из таблицы QA.Я использовал этот оператор SQL, но он дает ошибку.

UPDATE 
    [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] as t1
SET 
    t1.Show = (Select t2.show from [spdbQA.test.com\spQA].[aspnetdb].[dbo].
[Communities_Groups] as t2 where t1.GroupID = t2.GroupdID)

Что мне здесь не хватает? Ошибка: ОБНОВЛЕНИЕ.(«Неверный синтаксис рядом с ключевым словом« как ».)

Ответы [ 3 ]

18 голосов
/ 20 июня 2011

Вы используете псевдоним таблицы неправильно.Вы не можете сделать UPDATE table1 t SET field1=val, вы должны написать UPDATE table1 SET field=val (или UPDATE table1 SET field=val FROM table1 t).Поэтому измените ваш запрос на

UPDATE [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups]   
SET Show = t2.show
FROM [spdbprod.test.com\spprod].[aspnetdb].[dbo].[Communities_Groups] t1
INNER JOIN [spdbQA.test.com\spQA].[aspnetdb].[dbo].
[Communities_Groups] t2 ON (t1.GroupID = t2.GroupID)
1 голос
/ 19 августа 2018

Я знаю, что на этот вопрос уже ответили, но это сработало для меня.

  • Добавление связанного сервера в разделе «Объекты сервера» | Связанные серверы: Документация Microsoft .
  • Имя связанного сервера [SERVER-NAME or <some ipaddress>, <some-port>]

    например. [10.0.0.200,2345] - Я использую порт 2345, но стандартный порт MS SQL - 1433 .

Пример:

  • У нас есть [Customers] стол
  • Мы хотим обновить поле [CustomerAddress] для CustomerId = 123
  • Мы хотим использовать данные резервного копирования с сервера [backupServer]
  • [backupServer] - это машина, на которой мы выполняем SQL

Это SQL-код:

UPDATE production
SET
    CustomerAddress = backupServer.CustomerAddress
FROM 
    [10.0.0.200,2345].[ProductionDatabase].[dbo].[Customers] production
INNER JOIN 
    [BackupDatabase].[dbo].[Customers] backupServer
        ON 
            production.CustomerId = backupServer.CustomerId
WHERE 
    backupServer.CustomerId = 123

Обобщенный формат:

UPDATE production
SET
    columnName = backupServer.columnName
FROM 
    [SERVER-NAME or IP,PORT].[ProductionDatabase].[dbo].[tableName] production
INNER JOIN 
    [BackupDatabase].[dbo].[tableName] backupServer
        ON 
            production.SomeId = backupServer.SomeId
WHERE 
    backupServer.SomeId = <id>
0 голосов
/ 20 июня 2011

Я полагаю, что вы должны иметь ссылку на базу данных (связанные серверы), чтобы это работало.

У меня нет доступа к двум серверам SQL здесь на работе, поэтому я не могу проверить это, но я уверен, что вынужна ссылка.У вас есть настройка связанного сервера?

Вот URL, который может помочь http://msdn.microsoft.com/en-us/library/ms188279.aspx

Харви Сатер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...