我编写了一个使用sqlps部署SSAS表格多维数据集的脚本。在部署之后,我需要在多维数据集上执行一些操作,但如果我尝试访问它,我会收到一条消息,指出该多维数据集不存在。但事实上,如果我将操作拆分为两个脚本(deploy -> exit sqlps -> new sqlps session),它就可以工作(出于现在无关紧要的原因,我不能这么做)。
似乎sqlps会话没有看到它刚刚部署的多维数据集。我想知道是否有可以运行的刷新命令,或者是否可以在“读取未提交”状态下运行sqlps。
发布于 2015-03-06 00:18:50
您是否使用支持cmdlet的PowerShell Transactions?看起来只有在你的脚本用完后才会提交事务。
尝试将部署逻辑拆分为两个事务:创建多维数据集和需要执行的其他操作。对于每个部分,您都应该使用它自己的事务,如下所示:
Start-PSTransaction
// logic
Complete-PSTransaction如果需要以编程方式访问事务,则应在PowerShell中使用TransactionScope模拟,即Cmdlet的CurrentPsTransaction属性,如下所示:
using(CurrentPsTransaction)
{
... // Perform transactional work here
}
... // Perform non-transacted work here
using(CurrentPsTransaction)
{
... // Perform more transactional work here
}更新:
您可以使用声明打开事务吗?
为事务开发- Cmdlet和提供者声明Cmdlet声明它们支持事务的方式与声明它们支持ShouldProcess的方式类似:
Cmdlet(“Get”,“Process”,SupportsTransactions=True)
提供者通过ProviderCapabilities标志声明他们对事务的支持:
CmdletProvider(“注册表”,ProviderCapabilities.Transactions)
关于Powershell中的隔离级别的更多信息:
TransactionScope with IsolationLevel set to Serializable is locking all SQL SELECTs
https://stackoverflow.com/questions/28544492
复制相似问题