SQLCMD-在没有明文密码的情况下运行SQL查询脚本?

时间:2019-10-15 23:02:44

标签: sqlcmd cleartext

希望您到目前为止过得愉快:)

我正在使用此脚本自动执行sqlquery,以便其他团队可以使用这些日志。但是,不允许他们具有此数据库的登录凭据,并且我当前的脚本使用明文密码。

我建议我们创建一个新的数据库概要文件并限制该概要文件的权限,以便仅特定表可以使用只读权限进行访问。但是,这不是最佳做法,我的领导也不喜欢这个主意。

因此,我试图找出一种无需使用明文即可通过脚本传递登录凭据的方法。

您有什么想法吗?

这是我在批处理文件中运行的cmd的当前格式:

sqlcmd -S server.database.windows.net -U user@domain -P password -d DB_Name -i "c:\users\%USERNAME%\desktop\Blue Prism Audit Logs\eventdatetime24hr.sql" -o "c:\users\%USERNAME%\desktop\Blue Prism Audit Logs\Audit Logs\queryOut%DATE:~4,2%_%DATE:~7,2%_%DATE:~-4%_%time:~0,2%%time:~3,2%.csv"

1 个答案:

答案 0 :(得分:0)

  1. 展开“ SQL Server代理”节点,然后右键单击SQL Server代理中的“作业”节点,然后选择“新建作业”

  2. 在“新作业”窗口中,输入作业名称和“常规”标签上的描述。

  3. 在窗口左侧选择“步骤”,然后单击底部的“新建”。

  4. 在“步骤”窗口中输入步骤名称,然后选择要对其运行查询的数据库。

  5. 将要运行的T-SQL命令粘贴到“命令”窗口中,然后单击“确定”。

  6. 单击“新作业”窗口左侧的“计划”菜单,然后输入计划信息(例如每天和某个时间)。

单击“确定”-应该就是这样。

(当然,您还可以添加其他选项-但我要说的是,这是您设置和安排工作的最低要求)

带有输出的示例tsql代码

nullreferenceexception object reference not set to an object

此处有更多信息:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql?view=sql-server-ver15

这将创建一个脚本,该脚本可以在您希望的任何时候运行,并将其设置在数据库上,然后您可以决定将输出放置在什么位置,即在目标位置以供其他团队提取。