SQL Server打印输出到Chef inspec

SQL Server打印输出到Chef inspec,sql,sql-server,chef-infra,devops,Sql,Sql Server,Chef Infra,Devops,SQL Server打印消息不会被纳入chef inspec进行验证。我们是否有验证的选项 下面的chef inspec示例代码不接受SQL Server打印消息 sql = mssql_session(user: 'sa', password: 'Test') describe sql.query(" -- #5.2 - Set the ''default trace enabled'' Server Configuration Option to 1 IF EXISTS (SELE

SQL Server打印消息不会被纳入chef inspec进行验证。我们是否有验证的选项

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

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

使用选择“确定”作为值/选择“不确定”作为值,而不是打印“确定”


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

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

按照@user2845090的建议,最好使用SELECT语句

选择案例时 存在选择名称 ,CASTvalue作为int作为配置的值 ,CASTvalue_in_use作为int作为value_in_use 来自sys.configurations,其中name='default trace enabled' 和value=1和value\u in\u use=1,然后是'OK'或'NOT OK' 终止 或

选择IIFEXIST选择名称 ,CASTvalue作为int作为配置的值 ,CASTvalue_in_use作为int作为value_in_use 来自sys.configurations,其中name='default trace enabled' 和value=1和value\u in\u use=1,'OK','notok'