用 sql 个文件填充 ms sql

Populating ms sql with sql files

我已经有一个现有的数据库,我正在尝试每天更新。我每天都会转储 sql 个文件。下面的批处理脚本在我第一次 运行 时创建并填充了数据库,但是当我尝试用它更新数据库时它不起作用。

`@echo off
ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
sqlcmd.exe  -S servername -E   -d DatabaseName -i %%f >>output.txt
    )
pause`

使用 sql 文件更新数据库是否有不同的命令? 这是我得到的输出。

HUTRC started the batch process at 9:55:12.25 Changed database context to 'master'. Msg 15416, Level 16, State 1, Server HUTRC1-HP, Procedure sp_dbcmptlevel, Line 67 Usage: sp_dbcmptlevel [dbname [, compatibilitylevel]] Valid values of the database compatibility level are 100, 110, or 120.

sql 文件的样子。它很长。我刚得到前几行。

USE [master]
GO
IF NOT EXISTS (SELECT [name] FROM sys.databases WHERE name = N'Migration')
BEGIN
CREATE DATABASE [Migration] COLLATE SQL_Latin1_General_CP1_CI_AS
END
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'Migration', @new_cmptlevel=90

错误消息准确地告诉您在哪里寻找问题以及它是什么(强调):

Procedure sp_dbcmptlevel, Line 67 Usage: sp_dbcmptlevel [dbname [, compatibilitylevel]] Valid values of the database compatibility level are 100, 110, or 120.

检查 sp_dbcmptlevel 的 SQL 脚本表明它使用了不同的值:

EXEC dbo.sp_dbcmptlevel @dbname=N'Migration', @new_cmptlevel=90
                                                             ^^

您需要将 SQL 脚本编辑为有效的兼容级别,或者将您的服务器版本降级为与源服务器相同的版本。