我有一个查询如下所示:
select count(*) as Count, datepart(yyyy, [LogDate]) as [Year]
from ViewAssociate..Auth_Log
where ActionCode = 12
group by datepart(yyyy, [LogDate])
order by [Year]
Run Code Online (Sandbox Code Playgroud)
此查询是基于 ReadAssociate 数据库的存储过程的一部分。它试图从 ViewAssociate 数据库中获取数据。尝试运行存储过程的用户无权访问 ViewAssociate 数据库,因此查询会引发错误。
我的问题是我能否以某种方式修改查询并为其提供用户名密码以运行,以便我可以从 ViewAssociate Db 获取数据。有人建议,Execute As
但这似乎不起作用。
execute as login = 'viewassociate'
我收到此错误:
无法作为服务器主体执行,因为主体“viewassociate”不存在,无法模拟此类主体,或者您没有权限。
该 viewassociate 是一个 sql 登录,它属于db_owner
ViewAssociate 数据库。
我有一个 Sql 脚本文件,它执行一系列操作。我在脚本中有事务,所以如果发生什么事,整个脚本都会回滚。
我的问题是说脚本成功执行并且在测试应用程序时发现了某些错误。
现在我想在说 x 天后恢复脚本中发生的所有操作。这是一个事务性数据库,我不必担心任何新的数据添加,因为这只是一个暂存环境。我关心的是恢复 SQL 脚本本身所做的所有结构或数据修改。有人可以告诉我有哪些选择。
我是否需要在回滚脚本中为原始脚本所做的操作编写完全相反的语句。
示例:
主脚本 -Insert Into Customers values(1,'Test','USA') 回滚脚本 - 从 id = 1 的客户中删除 .. 等其他事务(我已经简化了这一点,我在SQL 脚本文件)
谢谢
谢谢