work usar transact open name how como another sql-server tsql stored-procedures ssms

sql server - usar - ¿Cuál es la sintaxis de T-SQL para conectarse a otro servidor SQL?



transact sql connect to another server (9)

Si necesito copiar un procedimiento almacenado (SP) de un servidor SQL a otro, hago clic derecho en el SP en SSMS y selecciono Procedimiento almacenado de script como> CREAR a> Ventana del nuevo editor de consultas. Luego cambio la conexión haciendo clic derecho en esa ventana y seleccionando Conexión> Cambiar conexión ... y luego seleccionando el nuevo servidor y F5 para ejecutar la creación en el nuevo servidor.

Entonces mi pregunta es "¿Cuál es la sintaxis de T-SQL para conectar con otro servidor SQL?" para poder pegarlo en la parte superior del script de creación y F5 para ejecutarlo y cambiar al nuevo servidor y ejecutar el script de creación.

Mientras escribía la pregunta, me di cuenta de que si les daba el telón de fondo de lo que estoy tratando de hacer, podrían hacer una mejor y más rápida manera de lograrlo.


Actualización: para conectarse a otro servidor sql y ejecutar sentencias sql, debe usar la utilidad sqlcmd . Esto generalmente se hace en un archivo por lotes. Puede combinar esto con xmp_cmdshell si desea ejecutarlo dentro del estudio de administración.

Una forma es configurar un servidor vinculado . luego puede agregar el servidor vinculado y el nombre de la base de datos al nombre de la tabla. (seleccione * de linkedserver.database.dbo.TableName)

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


Además, asegúrese de que cuando escribe la consulta que involucra al servidor vinculado, incluya corchetes como este:

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

Descubrí que al menos en 2000/2005 los corchetes [] son ​​necesarios, al menos alrededor del nombre del servidor.


Cada vez que intentamos recuperar datos de otro servidor, necesitamos dos pasos.

Primer paso:

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

Segundo paso:

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




Si es posible, consulte SSIS (SQL Server Integration Services). Me estoy mojando los pies con este kit de herramientas, pero ya estoy trabajando en más de 40 servidores y preparándome para causar todo tipo de estragos;)



Si tuviera que parafrasear la pregunta: ¿es posible elegir el contexto del servidor para la ejecución de consultas en el DDL? La respuesta es no. Solo el contexto de la base de datos se puede elegir mediante programación con USE. (habiendo preseleccionado el contexto del servidor externamente)

El servidor vinculado y OPEN QUERY pueden dar acceso al DDL pero requieren una reescritura de su código para encapsularlo como una cadena, lo que dificulta el desarrollo / depuración.

Alternativamente, podría recurrir a un programa de controlador externo para recoger los archivos SQL y enviarlos al servidor remoto a través de OPEN QUERY. Sin embargo, en la mayoría de los casos también podría haberse conectado al servidor directamente en el 1er lugar para evaluar el DDL.


en mi unidad C, primero creo un archivo txt para crear una nueva tabla. Puedes usar lo que quieras en este archivo de texto

en este caso, el archivo de texto se llama "Bedrijf.txt"

el contenido:

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]

guardarlo

luego creo otro archivo txt con el nombre "Bedrijf.bat" y la extensión bat. Su contenido:

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

guárdelo y desde el explorador haga doble clic para ejecutar

Los resultados se guardarán en un archivo txt en su disco C con el nombre "Bedrijf.out"

muestra

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

si todo va bien

Eso es