Подтвердить что ты не робот

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

Если мне нужно скопировать хранимую процедуру (SP) с одного SQL-сервера на другой, щелкните правой кнопкой мыши на SP в SSMS и выберите Script Сохраненная процедура как > CREATE в > Окно редактора новых запросов. Затем я меняю соединение, щелкнув правой кнопкой мыши на этом окне и выбрав Connection > Change Connection..., а затем выбрав новый сервер и F5, чтобы запустить создание на новом сервере.

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

В SQL Server Management Studio включите режим SQLCMD из меню Query. Затем в верхней части вашего script введите команду ниже

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

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

Ответ 3

Обновление: для подключения к другому серверу sql и выполнения операторов sql вы должны использовать sqlcmd Utility. Обычно это делается в пакетном файле. Вы можете комбинировать это с xmp_cmdshell, если вы хотите выполнить его в студии управления.


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

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

Ответ 4

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

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

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

Ответ 5

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

Первый шаг:

-- 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

Ответ 6

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

Ответ 7

Если вы подключаетесь к нескольким серверам, перед переключением серверов вы должны добавить "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

Ответ 8

на моем диске 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.bat" и удвоенной битой. Содержание:

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

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

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

показывает

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

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

Что он

Ответ 9

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