如何将 sqlcmd.exe 作为 Windows 服务运行?

如何将 sqlcmd.exe 作为 Windows 服务运行?

Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) 2019 年 9 月 24 日 13:48:23 版权所有 (C) 2019 Microsoft Corporation 速成版(64 位)在 Windows Server 2016 Standard 10.0(内部版本 14393:)(虚拟机管理程序)

我试图在 Windows 服务中运行 sqlcmd 命令,但什么也没发生

这是我的命令

sqlcmd -S mySQLserver\SQLEXPRESS -i D:\myscript.sql

使用 NSSM 创建服务
国家安全监测系统1 国家安全监测系统2 该服务已安装,但在启动服务时出现错误 NSSM_错误

使用 NSSM 执行相同操作,但这次运行批处理文件,执行后运行 sqlcmd 命令。这会安装并启动服务,但不执行任何操作

接下来是使用 NSSM 安装一个小型 VB.Net(VS 2019)应用程序


Public Class Form1
    Private Sub Execute_batch_file()
        Dim Process = New Process()
        Process.StartInfo.UseShellExecute = False
        Process.StartInfo.RedirectStandardOutput = True
        Process.StartInfo.RedirectStandardError = True
        Process.StartInfo.CreateNoWindow = True
        Process.StartInfo.FileName = "SQLCMD.EXE"
        Process.StartInfo.Arguments = "-S mySQLserver\SQLEXPRESS -i D:\myscript.sql
    "
        Process.StartInfo.WorkingDirectory = "D:\"
    'I have put some stuff here to copy files from one place to another
            Process.Start()
    'I have put some stuff here to copy different files from one place to another
    End Sub
    
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Execute_batch_file()
    End Sub
    End Class

它作为服务安装并启动,但不执行 SQLCMD 进程,但是,命令之前和之后的文件复制Process Start()工作正常,所以我知道服务正常。

我也尝试过使用 Visual Studio 来创建服务并得到了相同的结果,一切正常,计时器、日志记录等,但 SQLCMD 进程除外。

最后...如果我使用相同的参数从命令行运行 SQLCMD,它可以正常工作。如果我运行包含 SQLCMD 命令和参数的批处理文件,它可以正常工作,只是不能通过服务。

我浏览了整个论坛,除了一条没有任何答案的帖子外,没有找到任何类似的内容。

任何帮助,将不胜感激

NSSM 使用直接访问 SQLCMD 和参数 NSSM 使用批处理文件运行 SQLCMD 和参数 NSSM 使用已编译的 VB 应用程序运行进程(批处理文件中的 sql 脚本) Visual Studio - Windows 服务

相关内容