我编写了一个脚本,该脚本使用sqlps部署SSAS表格多维数据集。部署之后,我需要对多维数据集执行几个操作,但是如果尝试访问它,则会收到一条消息,指出该多维数据集不存在。但是实际上,如果我将操作分成两个脚本(部署->退出sql ps->新的sqlps session ),它确实可以工作(出于现在无关紧要的原因,我不能这样做)。
看来sqlps session 没有看到它刚刚部署的多维数据集。我想知道是否有可以运行的刷新命令,或者是否可以在“读取未提交”状态下运行sqlps。
最佳答案
您是否使用PowerShell Transactions支持cmdlet?看起来只有在脚本用完之后才提交事务。
尝试将部署逻辑分为两个事务:创建多维数据集和您需要执行的其他操作。对于每个部分,您都应该使用它自己的事务,如下所示:
Start-PSTransaction
// logic
Complete-PSTransaction
如果您需要以编程方式访问事务,则应在PowerShell中使用Cmdlet的
TransactionScope
属性的CurrentPsTransaction
类似物,如下所示:using(CurrentPsTransaction)
{
... // Perform transactional work here
}
... // Perform non-transacted work here
using(CurrentPsTransaction)
{
... // Perform more transactional work here
}
更新:
也许您可以使用声明打开交易?
有关Powershell中的隔离级别的更多信息:
TransactionScope with IsolationLevel set to Serializable is locking all SQL SELECTs
关于sql - sqlps交易问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28544492/