Каков синтаксис T-SQL для подключения к другому SQL-серверу?



Если мне нужно скопировать хранимую процедуру (SP) с одного SQL Server на другой, я щелкните правой кнопкой мыши на SP в SSMS и выберите Script Stored Procedure as > CREATE to > New Query Editor Window. Затем я изменяю соединение, щелкнув правой кнопкой мыши по этому окну и выбрав соединение > изменить соединение... а затем выберите новый сервер и F5 для запуска create на новом сервере.



Итак, мой вопрос: "каков синтаксис T-SQL для подключения к другому SQL-серверу?"так что я могу просто вставьте это в верхней части сценария create и F5, чтобы запустить его, и он переключится на новый сервер и запустит сценарий create.



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

1314   9  

9 ответов:

кроме того, убедитесь, что при написании запроса с участием связанного сервера вы включаете скобки следующим образом:

SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]

Я обнаружил, что по крайней мере на 2000/2005 [] скобки необходимы, по крайней мере, вокруг имени сервера.

в среде среда SQL Server Management Studio включите режим SQLCMD в меню запрос. Затем в верхней части сценария введите команду ниже

:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]

Если вы подключаетесь к нескольким серверам, не забудьте вставить GO между соединениями; в противном случае ваш T-SQL не будет выполняться на сервере, о котором вы думаете.

Update: для подключения к другому sql server и выполнения инструкций sql необходимо использовать программы sqlcmd. Обычно это делается в пакетном файле. Вы можете объединить это с xmp_cmdshell Если вы хотите выполнить его в среде management studio.


один из способов-настроить связанного сервера. затем можно добавить связанный сервер и имя базы данных к имени таблицы. (выбрать * из linkedserver.база данных.ДБО.TableName)

USE master
GO
EXEC sp_addlinkedserver 
    'SEATTLESales',
    N'SQL Server'
GO

Если бы я перефразировал вопрос - Можно ли выбрать контекст сервера для выполнения запроса в DDL - ответ нет. Только контекст базы данных может быть программно выбран с использованием. (предварительно выбрав контекст сервера извне)

Linked server и OPEN QUERY могут предоставить доступ к DDL, но требуют некоторой перезаписи вашего кода для инкапсуляции в виде строки, что затрудняет разработку/отладку.

также вы можете прибегнуть к внешний драйвер программы для раскладки файлов SQL для отправки на удаленный сервер с помощью открытого запроса. Однако в большинстве случаев вы могли бы также подключиться к серверу непосредственно в 1-м месте, чтобы оценить DDL.

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

первый этап:

-- Server one scalar variable
DECLARE @SERVER VARCHAR(MAX)
--Oracle is the server to which we want to connect
EXEC SP_ADDLINKEDSERVER @SERVER='ORACLE'

Шаг второй:

--DBO is the owner name to know table owner name execute (SP_HELP TABLENAME)    
SELECT * INTO DESTINATION_TABLE_NAME 
FROM ORACLE.SOURCE_DATABASENAME.DBO.SOURCE_TABLE

Если вы подключаетесь к нескольким серверам, вы должны добавить " GO " перед переключением серверов, или ваши инструкции sql будут выполняться на неправильном сервере.

например

:CONNECT SERVER1
Select * from Table
GO
enter code here
:CONNECT SERVER1
Select * from Table
GO

http://www.sqlmatters.com/Articles/Changing%20the%20SQL%20Server%20connection%20within%20an%20SSMS%20Query%20Windows%20using%20SQLCMD%20Mode.aspx

попробуйте создать связанный сервер (что вы можете сделать с процедуры sp_addlinkedserver), а затем с помощью OPENQUERY

на моем диске C я сначала создаю txt-файл для создания новой таблицы. Вы можете использовать все, что вы хотите в этом текстовом файле

в этом случае текстовый файл называется "Bedrijf.txt"

содержание:

Print 'START(A) create table'

GO 1

If not EXISTS
(
    SELECT *
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'Bedrijf'
)
BEGIN
CREATE TABLE [dbo].[Bedrijf] (
[IDBedrijf] [varchar] (38)   NOT NULL ,
[logo] [varbinary] (max) NULL ,
[VolledigeHandelsnaam] [varchar] (100)  NULL 
) ON [PRIMARY]

сохранить

затем я создаю другой txt-файл с именем " Bedrijf.летучая мышь " и расширение летучей мыши. Это содержание:

OSQL.EXE  -U Username -P Password -S IPaddress -i C:Bedrijf.txt -o C:Bedrijf.out -d myDatabaseName

сохраните его и из проводника дважды щелкните, чтобы выполнить

результаты будут сохранены в txt файл на вашем диске C с именем "Bedrijf.вон"

Это показывает

1> 2> 3> START(A) create table

если все пойдет хорошо

вот это

Если возможно, проверьте службы SSIS (службы SQL Server Integration Services). Я просто получаю свои ноги мокрые с этим инструментарием, но уже зацикливаюсь на 40 + серверах и готовлюсь нанести всевозможный хаос;)

Comments

    Ничего не найдено.