我有一个自动部署脚本,使用dacpac和sqlpackage.exe,SSRS报告和网站部署数据库更改.
当我在命令行执行脚本时,sqlpackage输出以下消息:
对象[objectname]已存在于具有不同定义的数据库中,不会被更改.
控制台上的输出为黄色,表示它是警告,部署继续并按预期完成.
但是,当我通过TFS构建触发相同的脚本时,Build Explorer中会记录相同的消息,但旁边会显示错误图标.部署仍在继续,自动化测试运行等,但构建状态更改为带有勾号并交叉的图标 - 表示构建已成功完成,但其他任务失败.
有一个参数可以提供给sqlpackage,UnmodifiableObjectWarnings,它应该可以抑制这种警告,但msdn上有一个帖子表明这个参数存在错误,但它不起作用.
我想知道在Powershell中我是如何陷阱并抑制这种警告的,因为我不希望我的构建/部署因为这个警告而失败.但是我无法抑制对sqlpackage的所有错误输出,因为可能存在其他完全有效的错误.
更新
我已尝试按照以下建议:https: //serverfault.com/questions/340711/redirect-stderr-to-variable-in-powershell 并尝试使用类似于以下代码:
try {
$test = & "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /SourceFile:"$dacpac" /Profile:"$dbProfile" /p:UnmodifiableObjectWarnings=True /Action:Publish 2>&1
$errMsg = $test | ?{$_.gettype().Name -eq "ErrorRecord"}
$normMsg = $test | ?{$_.gettype().Name -ne "ErrorRecord"}
}
catch {
Write-Host "Caught Exception $_"
}
Run Code Online (Sandbox Code Playgroud)
但是,只要exe返回警告消息,我的调用函数就会抛出并处理异常 - 并且不会发生部署.
但是,如果我将其称为如下:
try {
& "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /SourceFile:"$dacpac" /Profile:"$dbProfile" /p:UnmodifiableObjectWarnings=True /Action:Publish 2>&1
}
catch {
Write-Host "Caught Exception $_"
}
Run Code Online (Sandbox Code Playgroud)
即没有变量$ test …
我希望通过互联网向一系列客户提供服务.在这个阶段,api非常小,我只希望已知的客户端能够访问该服务.我现在不需要能够识别客户端,但是我预计随着api的增长,我将来需要能够识别客户端.
我想知道在短期内确保服务安全的最佳方法是什么,从长远来看,我可能希望能够授权客户端访问服务上的特定方法?
我在考虑使用传输安全性 - 即SSL.我是否还应该使用Message security来查看
clientCredentialType="certificate"
Run Code Online (Sandbox Code Playgroud)
在哪个clase每个客户端将拥有自己的证书,将使用该服务对其进行身份验证?
或者我应该只是为每个客户提供一个API密钥,它将提供类似的客户差异化水平?
欢迎任何其他建议.
请注意,这是服务接口的服务 - 即不是客户端应用程序.服务的用户数量将受到限制,我预计不需要在数据级别应用安全性,更多的是在方法访问级别.
我想知道是否有一个现有的控件,或者是否可以直接开发一个允许通过网络逐步加载多页tiff的控件?我正在处理一些长达数千页的tiff图像,一旦下载一页或多页图像就会开始显示,并且只根据需要检索图像的其他页面,或者按需下载或带宽可用时下载.我意识到TIFF图像具有某些结构要求和周围的元数据,但期望这应该是可能的.