小编ROA*_*OAL的帖子

跨数据库视图 - 无法在当前安全上下文下访问数据库

我们有两个数据库,AdbBdb. 在Bdb,我们创建了一个观点,即引用另一种观点认为Adb,像这样:CREATE VIEW Bdb.dbo.Bview AS SELECT * FROM Adb.dbo.Aview

我们有一个 SQL Authenticated Blogin,映射到BuserAdbBdb,至少db_datareader在两者上都有角色。

以下不起作用:

USE Bdb;
EXECUTE AS USER = 'Buser';
SELECT * FROM Bdb.dbo.Bview;
SELECT * FROM Adb.dbo.Aview;
Run Code Online (Sandbox Code Playgroud)

两个选择都会引发以下错误:

Msg 916, Level 14, State 1, Line 4
The server principal "Buser" is not able to access the database "Adb" under the current security context.
Run Code Online (Sandbox Code Playgroud)

但是,这有效:

USE Adb;
EXECUTE AS USER …
Run Code Online (Sandbox Code Playgroud)

sql-server permissions sql-server-2012 users

3
推荐指数
1
解决办法
1万
查看次数

在行之间找到共同的价值

我有以下带有示例值的表结构:

Number      Reference                 Length                                  Quantity
----------- ------------------------- --------------------------------------- ----------
16002983    ASH 14                    383.000000                              4
16002983    ASH 14                    1669.000000                             4
16002983    GLAS-NP                   403.000000                              1
16003002    SZR 16                    1402.000000                             1
16003002    Energy Surcharge F        56556.680000                            1
16003256    SZR 14                    726.000000                              1
16003256    Energy Surcharge F        40706.820000                            1
16003256    7283-ASB                  726.000000                              1
16003308    ASH 14                    740.000000                              4
Run Code Online (Sandbox Code Playgroud)

截至目前,该表有 742 个条目,并且每天都在扩展。

我需要找到一个Reference在所有Numbers之间共享的,如果有的话。

如何?我甚至不知道我是否需要JOINS, GROUP BY,别的东西吗?我似乎在逻辑上失败了。

任何帮助表示赞赏。

sql-server

2
推荐指数
1
解决办法
58
查看次数

获取 XML 的属性值

我在 SE 上至少回答了 5 个问题,但我一定已经因为沮丧而做了一些非常糟糕的事情。

我有一个存储过程,它返回这样的 XML:

<pmsg:Messages>
    <pmsg:Message Info="blah" />
</pmsg:Messages>
Run Code Online (Sandbox Code Playgroud)

我需要获取Info.

DECLARE @xmlMessage XML;

EXEC procReturnsXml @xmlMessage OUTPUT;

 -- returns 0 rows
WITH XMLNAMESPACES('pmsg' AS pmsg)
SELECT msgs.msg.value('@Info', 'nvarchar(max)')
FROM   @xmlMessage.nodes('pmsg:Messages/pmsg:Message') msgs(msg);

 -- returns NULL
WITH XMLNAMESPACES('pmsg' AS pmsg)   
SELECT @xmlMessage.value('(/pmsg:Messages/pmsg:Message/@Info)[1]', 'nvarchar(max)');

-- returns NULL
WITH XMLNAMESPACES('pmsg' AS pmsg)  
SELECT t.x.value('(/pmsg:Messages/pmsg:Message/@Info)[1]', 'nvarchar(max)') AS INFO
FROM   @xmlMessage.nodes('/*') t(x); 
Run Code Online (Sandbox Code Playgroud)

一般来说,我根本不明白这些是什么意思。你能提供一个关于这个案例的例子吗?

xml sql-server

0
推荐指数
1
解决办法
7507
查看次数

标签 统计

sql-server ×3

permissions ×1

sql-server-2012 ×1

users ×1

xml ×1