Что такое синтаксис T-SQL для подключения к другому SQL Server?
Если мне нужно скопировать хранимую процедуру (SP) с одного SQL-сервера на другой, щелкните правой кнопкой мыши на SP в SSMS и выберите Script Сохраненная процедура как > CREATE в > Окно редактора новых запросов. Затем я меняю соединение, щелкнув правой кнопкой мыши на этом окне и выбрав Connection > Change Connection..., а затем выбрав новый сервер и F5, чтобы запустить создание на новом сервере.
Итак, мой вопрос: "Каков синтаксис T-SQL для подключения к другому SQL Server?" так что я могу просто вставить это в начало create Script и F5, чтобы запустить его, и он переключится на новый сервер и запустит create script.
Во время ввода вопроса я понял, что если я дам вам почву тому, что я пытаюсь сделать, вы можете быстрее и лучше прийти от меня, чтобы выполнить это.
Ответы
Ответ 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 серверов и готовлюсь к разным видам хаоса;)