小编Geo*_*tis的帖子

授予拒绝权限堆叠

对于角色db_denycustomer,我希望客户表的列代码是 SELECTable 的,其他的都不行。所以我这样做了:

DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer
Run Code Online (Sandbox Code Playgroud)

...它工作正常。凉爽的!但是,为什么

我在相关文章中读到的是权限堆栈,但DENY优先。相比之下,就我而言,似乎最后一个权限“查询”优先。果然,如果我以相反的顺序执行它们,后者DENY也会隐藏代码列。

你能详细说明一下吗?

我还为我测试的用户提供了默认值db_datawriterdb_datareader角色。

sql-server permissions role

9
推荐指数
1
解决办法
668
查看次数

我可以只使用 1 个用户进行 SQL Server 复制吗?

我想在 sql server 上设置事务复制。按照ms复制准备教程ms复制配置教程的说明,一切正常。

我的问题是:为什么所有这 4 个用户?如果我每一步只使用一个 Windows 用户/数据库登录名而不是 4 个,会不会有什么问题?

sql-server transactional-replication

4
推荐指数
1
解决办法
343
查看次数

可以更改默认对象名称吗?

迟早,数据库开发人员会遇到并可能使用许多对象的命名方案,如外键、默认约束等。

让我们考虑这个例子:将所有外键命名为:
FK__[name of source table]__[name of source col]__ref__[name of master table]__[name of master column]

例如,当使用create table提及 fk 但未明确提供约束名称的语句时,可以使用什么样的参数化/外部程序来实现具有这样的默认名称?

sql-server

4
推荐指数
2
解决办法
146
查看次数

死锁 xml 上的重复资源

当我调试死锁时,我注意到在 xml 中resource-list,第一个和第三个对象锁是相同的。这有什么原因吗?

逐字逐句<resource-list>

 <resource-list>
  <objectlock lockPartition="0" objid="580509447" subresource="FULL" dbid="7" objectname="censoredV2.dbo.pt_sales" id="lock1929b2d5500" mode="Sch-M" associatedObjectId="580509447">
   <owner-list>
    <owner id="process194df0e5468" mode="Sch-M" />
   </owner-list>
   <waiter-list>
    <waiter id="process1947a066ca8" mode="Sch-M" requestType="wait" />
   </waiter-list>
  </objectlock>
  <objectlock lockPartition="0" objid="94623380" subresource="FULL" dbid="7" objectname="censoredV2.dbo.pt" id="lock1929a8cf480" mode="IX" associatedObjectId="94623380">
   <owner-list>
    <owner id="process1907da684e8" mode="IX" />
   </owner-list>
   <waiter-list>
    <waiter id="process194df0e5468" mode="Sch-M" requestType="wait" />
   </waiter-list>
  </objectlock>
  <objectlock lockPartition="0" objid="580509447" subresource="FULL" dbid="7" objectname="censoredV2.dbo.pt_sales" id="lock1929b2d5500" mode="Sch-M" associatedObjectId="580509447">
   <owner-list>
    <owner id="process1947a066ca8" mode="Sch-M" requestType="wait" />
   </owner-list>
   <waiter-list>
    <waiter id="process1907da684e8" mode="IX" requestType="wait" />
   </waiter-list>
  </objectlock>
 </resource-list>
Run Code Online (Sandbox Code Playgroud)

sql-server deadlock

4
推荐指数
1
解决办法
182
查看次数

更新期间持有哪些锁

当我有一个包含多个查询的事务时,我可以通过使用waitfor和检查dm_tran_locks.

但我不能将一个查询“暂停”一半。具体来说,我想知道这个查询将如何持有锁:

update my_table set column1=new_value
where column2=filter_value
Run Code Online (Sandbox Code Playgroud)

这会从一开始就采取更新锁定吗?还是会先获取共享锁,直到确定指定的行where然后请求 U 锁?

sql-server locking

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