当我启动(或重新启动)我的 Windows 2012 R2 服务器实例(Google Cloud Server)时,我尝试运行 SQL 脚本。我使用 SQL 脚本、批处理文件和任务调度程序来执行此操作。
为了测试,我创建了一个简单的 SQL 脚本,将日期戳添加到表中:
USE <Databasename>
GO
INSERT INTO testingTable(time_Stamp)
VALUES (GETDATE())
SELECT * FROM testingTable
Run Code Online (Sandbox Code Playgroud)
(其中Databasename显然包含特定数据库的名称)
批处理文件如下所示:
sqlcmd -S <servername> -i "C:\Temp\testQuery.sql" > C:\Temp\output.txt
Run Code Online (Sandbox Code Playgroud)
我将所有内容输出到文本文件。当我运行批处理文件时,输出看起来不错:它打印一个列表,其中包含我运行此 SQL 查询的所有时间并将其保存在文本文件中。
我已安排此任务在启动时运行(按照此处的步骤操作: https: //www.sevenforums.com/tutorials/67503-task-create-run-program-startup-log.html)。我在这里尝试了一系列设置,但似乎没有任何效果,包括论坛中突出显示的确切设置。
当我现在重新启动服务器时,输出文件显示以下错误消息:
Msg 904, Level 16, State 3, Server <servername>, Line 1
Database 7 cannot be autostarted during server shutdown or startup.
Msg 208, Level 16, State 1, Server <servername>, Line 2
Invalid object name 'testingTable'.
Run Code Online (Sandbox Code Playgroud)
似乎 MS SQL …