下面的数据库名称始终为空
我正在尝试使用EVENTDATA()在登录触发器中获取数据库名称,但它无法正常工作,并且似乎EVENTDATA()根本无法正常工作,我正在尝试阻止使用excel查询“测试数据库”。有人可以告诉我这段代码在做什么。
创建触发器tr_block_excel_users 在所有服务器上登录 AS
声明@data XML 将@DatabaseName声明为varchar(128)
SET @data = EVENTDATA(); 设置@DataBaseName = @ data.value('((/ EVENT_INSTANCE / DatabaseName)[1]','nvarchar(128)')
开始 IF(选择@DatabaseName)='TestDB'和ORIGINAL_LOGIN()<> N'xx \ xxxxxxxex'AND APP_NAME()喜欢'%Microsoft Office%'或APP_NAME()喜欢'%EXCEL%' 回滚; 结束
我希望使用EVENTDATA()获得数据库的名称,但是获得一个空白的数据库名称,
答案 0 :(得分:0)
如果您只是尝试获取数据库并将其加载到变量中,则可以尝试:
SET @DatabBaseName = SELECT DB_NAME()