首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server打印输出到Chef inspec

SQL Server打印输出到Chef inspec
EN

Stack Overflow用户
提问于 2020-11-22 23:22:55
回答 2查看 107关注 0票数 0

SQL Server打印消息不会进入chef inspec进行验证。我们有没有一个选项来验证。

下面的chef inspec示例代码不接受SQL Server打印消息。

代码语言:javascript
复制
sql = mssql_session(user: 'sa', password: 'Test')
describe sql.query("
-- #5.2 - Set the ''default trace enabled'' Server Configuration Option to 1
IF EXISTS (SELECT name, CAST(value as int) as value_configured, CAST(value_in_use as int) as value_in_use FROM sys.configurations WHERE name = 'default trace enabled' and (value=1 and value_in_use=1))
BEGIN
PRINT 'OK'
END
ELSE
PRINT 'NOT OK'") do
its("value") { should eq 'OK' }
end
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-23 04:10:47

不是打印'OK‘,而是选择'OK’作为值/选择'NOT OK‘作为值。

以编程方式获取打印消息是可以的,但是您需要代码来侦听连接的InfoMessage事件。基本上,您需要深入研究mssql_session或sql.query的代码...你可能不想这么做。

票数 1
EN

Stack Overflow用户

发布于 2020-11-23 12:07:59

您可以修改语句以直接返回OK或NOT OK,如下所示。SELECT返回结果集。打印不返回结果集。驱动程序必须使用InfoMessage事件以不同的方式读取它。Read more

更好的方法是使用@user2845090建议的SELECT语句。

代码语言:javascript
复制
SELECT CASE WHEN 
EXISTS (SELECT name
, CAST(value as int) as value_configured
, CAST(value_in_use as int) as value_in_use 
FROM sys.configurations WHERE name = 'default trace enabled' 
and (value=1 and value_in_use=1)) THEN 'OK' ELSE 'NOT OK' 
END

代码语言:javascript
复制
SELECT IIF(EXISTS((SELECT name
, CAST(value as int) as value_configured
, CAST(value_in_use as int) as value_in_use 
FROM sys.configurations WHERE name = 'default trace enabled' 
and (value=1 and value_in_use=1)),'OK','NOT OK') 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64955917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档