Saltar al contenido

Cómo pasar parámetros a un script SQL a través de Powershell

Nuestro grupo especializado pasados varios días de investigación y de recopilar de información, hemos dado con la solución, nuestro deseo es que todo este artículo sea de utilidad en tu plan.

Solución:

Puede aprovechar las variables de secuencias de comandos de sqlcmd. Esos se pueden usar en el archivo de script y están marcados con $(). Al igual que,

-- Sql script file
use $(db);
select someting from somewhere;

al llamar sqlcmdutilizar el -v parámetro para asignar variables. Al igual que,

sqlcmd -S serverinstance -E -v db ="MyDatabase" -i s.sql

Editar

Tenga en cuenta la sintaxis de Sql al establecer variables. Considere el siguiente guión:

DECLARE @dbName varchar(255)
SET @dbName = $(db)
select 'val' = @dbName

Tal como se pasó al servidor Sql, parece que sí (Profiler ayuda aquí):

use master;

DECLARE @dbName varchar(255)
SET @dbName = foo
select 'val' = @dbName

Esto es, obviamente, una sintaxis inválida, ya que SET @dbName = foo no tendrá mucho sentido. El valor debe estar entre comillas simples así,

sqlcmd -S serverinstance -E -v db ="'foo'" -i s.sql

En caso de que alguien más necesite hacer esto… aquí hay un ejemplo de trabajo.

Guión de PowerShell:

sqlcmd -S uk-ldn-dt270 -U sa -P 1NetNasdf£! -v db = "'DatabaseNameHere'" -i $scriptFile -b | Tee-Object -filepath $sqlLog

Tenga en cuenta el interruptor -v para asignar las variables

Y aquí está el MS SQL:

USE MASTER
GO

if db_id($(db)) is null

BEGIN
    EXEC('
    RESTORE DATABASE ' + $(db) + '
    FROM DISK = ''D:DB BackupEmptyLiveV5.bak''
    WITH MOVE ''LiveV5_Data'' TO ''C:Program Files (x86)Microsoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATALiveV5_' + $(db) + '.MDF'',
    MOVE ''LiveV5_Log'' To ''C:Program Files (x86)Microsoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATALiveV5_' + $(db) + '_log.LDF'', REPLACE,
    STATS =10')
END

Nota: No es necesario que asigne la variable de secuencias de comandos a una variable SQL normal como esta.

SET @dbName = $(db)

puedes usarlo en tu código sql. – Codificación feliz.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *