如何在SQL Server中自动执行命令提示符命令?

时间:2016-11-28 04:19:22

标签: sql-server tsql batch-file

我使用以下命令将性能计数器加载到SQL Server数据库中。

C:\Users\w8>TYPEPERF -f SQL -s admin -cf "C:\CounterCollect\Counters.txt" -si 15 -o SQL:SQLServerDS!log1 -sc 4

我要求每隔15分钟安排一次收集柜台。 我猜我们是否可以将其作为批处理文件,然后我可以使用任务调度程序安排它,但我是批处理文件概念的新手。

任何人都可以帮我吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

由于这是针对SQL Server的,我建议您使用SQL Agent代替Windows调度程序。

SQL Server Management Studio 中,打开 SQL Server代理,右键单击作业并创建新作业。

现在创建一个类型操作系统(cmdexec)的新步骤,然后将其粘贴到:

TYPEPERF -f SQL -s admin -cf "C:\CounterCollect\Counters.txt" -si 15 -o SQL:SQLServerDS!log1 -sc 4

您确实需要确保在SQL Server上安装了TYPEPERF,并且您可能需要在某个文件夹中运行它。您还需要确保SQL代理帐户具有访问权限。但是,在Windows调度程序中,这些都不同。

批处理文件的使用是可选的。如果命令更复杂,那可能是值得的。

您的工作(因为它可以无人值守运行)需要以某人的身份运行,因此它知道它是否允许执行操作,并且可以告诉各种日志它是谁等等。它作为默认设置'某人',(NT服务\ SQLSERVERAGENT)运行,但事实证明它没有创建文件的权限。所以你需要像有人一样运行它。

可以使用下面列出的任何内容来授予其所需权利。其中一些是愚蠢的,有些可能适合您的情况,也可能不适合。

  • 创建一个特殊服务帐户并使用该帐户
  • NT Service\SQLSERVERAGENT添加到本地管理员
  • 找到该文件夹​​并在其中提供NT Service\SQLSERVERAGENT创建权限
  • 创建自己的SQL Server凭据并在作业中使用
  • 更改SQL代理以自行运行

第一个选择是最多的企业'但可能超出您的需求。

最后一个选项更容易,但如果您需要更改密码则会受到影响。

我将解释最后一个选项:

  1. 通过运行services.msc(或在搜索中键入服务)打开服务管理器
  2. 在列表中找到SQL Server Agent
  3. 双击它,转到Log On标签,然后在那里输入您的登录名/密码
  4. 按确定(您可能会收到有关作为服务权限登录的消息)
  5. 现在您的SQL代理将像您一样运行,您不应该再收到该消息。

答案 1 :(得分:0)

批处理文件实际上是您在cmd中输入的任何命令。

存在一些差异,但主要是控制问题 - 循环等。

如果typeperf命令是您唯一需要的命令,那么恰好该行就足够了。

你可以稍微装饰一下。取决于口味

@echo off
setlocal
typeperf...
cls
exit

命令开头的@禁用该命令的命令回显。
echo off将命令回显,直到批次结束为止 setlocal确保所做的任何环境变更都是临时的 cls清除cmd窗口
`exit强制退出批处理。

只需将其放在名为 whateveryoulikebutdontuseacommandkeyword .bat

的文件中

使用文本编辑器,但不使用文字处理器。记事本几乎不够,因为它倾向于尝试格式化输入的文本。确保文件保存为ASCII。