-1

sqlcmdを使用して日付変数を渡し、日付が渡されない場合は変数をgetdate()に設定するチェック条件を実行したいと思います。誰かがこれについて私にアドバイスできますか?ありがとうございました。以下は私のSQLスクリプトです(getdate()の部分は変更する必要があります)

--Declare variable to store back up file location
DECLARE @DBBackupFile as nvarchar(128);

SET @DBBackupFile = N'C:\sqlbackup\MOL_POSHistory\MOL_POSHistory_backup_' + convert(varchar(12),(year(GETDATE()) * 10000) + (month(GETDATE()) * 100) + Day(GETDATE()) -4 ) + N'0201.bak';

--Retrive the Logical file name of the database from backup.
RESTORE FILELISTONLY
FROM DISK = @DBBackupFile
GO

--Make Database to single user Mode
ALTER DATABASE [MOL_POSHistory]
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE

--Restore Database
DECLARE @DBBackupFile as nvarchar(128);

SET @DBBackupFile = N'C:\sqlbackup\MOL_POSHistory\MOL_POSHistory_backup_' + convert(varchar(12),(year(GETDATE()) * 10000) + (month(GETDATE()) * 100) + Day(GETDATE()) -4 ) + N'0201.bak';

USE master;

RESTORE DATABASE [MOL_POSHistory] FROM DISK = @DBBackupFile WITH FILE = 1,

MOVE N'MOL_POSHistory' TO N'D:\SQLData01\MOL_POSHistory.mdf',

MOVE N'MOL_POSHistory_log' TO N'F:\SQLLog\MOL_POSHistory.ldf',

NOUNLOAD, REPLACE, STATS = 10

--Set database to multi user mode
ALTER DATABASE [MOL_POSHistory] SET MULTI_USER
GO
4

1 に答える 1

1

–vパラメーターを使用して、次のようにSQLCMDを呼び出す必要があります。

// Date format is YYYYMMDD

sqlcmd -S YOUR_SERVER -v inputDate="20010101" -i "YOUR_INPUT_FILE" -E

inputDate次のように、SQLCMD(この例では)によって渡されたパラメーターにアクセスできます。

DECLARE @inputDate NVARCHAR(50)

DECLARE @date DATETIME



SET @inputDate = '$(inputDate)'



IF (LEN(ISNULL(@inputDate, '')) = 0) BEGIN

        SET @date = GETDATE()

       PRINT 'Using default date'

END

ELSE BEGIN

        SET @date = @inputDate

        PRINT 'Using varaible date'

END
于 2012-06-27T05:38:22.277 に答える