sqlcmd - Sqlcmd - 在没有明文密码的情况下运行 sql 查询脚本?
问题描述
希望到目前为止你过得愉快:)
我正在使用这个脚本来自动化一个 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"
解决方案
展开 SQL Server Agent 节点并右键单击 SQL Server Agent 中的 Jobs 节点并选择“New Job”
在“新工作”窗口中,在“常规”选项卡上输入工作名称和描述。
选择窗口左侧的“步骤”,然后单击底部的“新建”。
在“步骤”窗口中,输入步骤名称并选择要运行查询的数据库。
将要运行的 T-SQL 命令粘贴到命令窗口中,然后单击“确定”。
单击“新作业”窗口左侧的“计划”菜单并输入计划信息(例如每天和时间)。
单击“确定”-应该就是这样。
(您当然可以添加其他选项 - 但我想说这是您设置和安排工作所需的最低限度)
带输出的示例 tsql 代码
DECLARE @cmd sysname, @var sysname;
SET @var = 'Hello world';
SET @cmd = 'echo ' + @var + ' > var_out.txt';
EXEC master..xp_cmdshell @cmd;
这将创建一个脚本,该脚本可以在您需要时运行,并将其设置在数据库上,然后您可以决定将输出放在哪里,即在目标位置供其他团队获取。
推荐阅读
- mongodb - 如何修复“无法识别的表达式 $round”,同时使用 mongodb $and 条件和 $lookup 将其应用于管道中的存储数据
- sql-server - 将动态参数传递给 SQL
- php - WordPress REST API 创建自定义帖子类型不起作用
- javascript - 为什么在没有延迟的超时函数运行时会触发阻塞的指针事件?
- java - 从 Apache Http 客户端旧版迁移到 OkHttp
- json - 在 Scala play WS 中处理 JSON 响应
- react-native - 减少Highcharts条形图中条形的长度
- powershell - 引用同一 PSCustomObject 的另一个属性
- soapui - 我想在 SOAPUI 中创建一个带有路径参数的 REST 模拟服务
- perl - 为什么价值被破坏?