【发布时间】:2015-05-11 14:15:18
【问题描述】:
我已经有一个现有的数据库,我正在尝试每天更新。我每天都会转储 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
【问题讨论】:
-
你能描述一下这个“不起作用”的方式吗?另外,您尝试加载的 sql 文件的内容是什么?
-
这是我得到的输出。 HUTRC 在 9:55:12.25 开始批处理将数据库上下文更改为“主”。消息 15416,级别 16,状态 1,服务器 HUTRC1-HP,过程 sp_dbcmptlevel,第 67 行用法:sp_dbcmptlevel [dbname [, compatibilitylevel]] 数据库兼容级别的有效值为 100、110 或 120。
-
那么,您的 SQL 文件中传递的数据库兼容级别的值是多少?该错误清楚地表明您提供的不是正确的值(100、110 或 120)。您没有包含导致错误的 SQL 脚本的内容,因此我们无法为您阅读。
-
我在发布答案后清理了一些杂乱的评论。您可能也想做同样的事情,因为它们不再相关。 :-)
标签: database sql-server-2008 tsql mysqldump sqlcmd