小编Roi*_*ish的帖子

允许用户在他自己的架构内做任何事情,但不能创建或删除架构本身

我在 SQL Azure 中创建了一个架构,并向数据库角色授予了以下权限:

CREATE ROLE myrole AUTHORIZATION dbo;
EXEC sp_addrolemember 'myrole', 'myuser';

CREATE SCHEMA myschema AUTHORIZATION dbo;

GRANT ALTER, CONTROL, DELETE, EXECUTE, INSERT, REFERENCES, SELECT, UPDATE, VIEW 
DEFINITION ON SCHEMA::myschema TO myrole;

GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO myrole;
Run Code Online (Sandbox Code Playgroud)

通过上面定义的权限myuser可以创建/删除自己的模式,所以为了克服这个问题我尝试了 ALTER ANY SCHEMA 权限。但此权限也拒绝用户创建/删除表。

需要什么权限才能允许用户在他自己的架构中做任何事情,但不能创建或删除架构本身?

schema sql-server permissions

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

链接服务器可供无权限用户使用

我让用户看到了他们不应该看到的链接服务器。

链接服务器被定义为只有我可以访问它,但每个人都可以看到和使用它。

我使用以下步骤创建了新的链接服务器:

  1. 将 SSMS 对象资源管理器连接到 SQL Server 实例
  2. 展开Server Objects,右击Linked Servers和左键单击New Linked Server...
  3. General选项卡中选择SQL ServerServer type和写入服务器的名称
  4. Security上半部分的选项卡下单击Add,选择“sa”为Local Login,输入Remote User名称和Remote Password
  5. Security下部选项卡下(下For a login not defined in the list above, connections will:)选择第一个选项:Not be made
  6. 单击OK并开始测试

现在唯一应该看到链接服务器的人是我(“sa”),但不知何故其他用户可以看到并使用它。

注1:可以使用链接服务器的用户在远程服务器上有权限,他们不会看到他们不应该看到的数据,他们只能在他们不应该看到的时候从链接服务器访问它。

注 2:我是这sysadmin两个实例中唯一的一个。

security sql-server ssms linked-server

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

磁盘空间已满但数据库中有可用的逻辑空间

我们有一个相当大的 MS SQL 2008R2 数据库,它驻留在 SSD 驱动器上。驱动器本身只有大约 110Gb 的空间,并且数据库文件是驱动器上唯一的文件。

数据库处于“简单”恢复模式,只有两个文件,.MDF 和.LDF。

磁盘现在几乎已满:MDF 目前的大小为 109Gb。但是,SSMS 告诉我有将近 18Gb 的“可用空间”(在“常规”属性页面中),如果我完成Shrink文件的操作,它还会告诉我有 18Gb 的可用空间。SSMS 还告诉我数据库大小约为 132Gb,这让我感到惊讶 - 这不适合驱动器!

从我所读到的,这shrink是一个非常糟糕的主意。但是,我开始看到复制错误 ( could not allocate space for object)。我们之前曾尝试缩小数据库,但在几个小时内,文件又恢复到原来的大小。

我们应该如何进行 - 鉴于显然有 18Gb 的可用空间,SQL 是否应该自动使用该可用空间?或者就这么简单:我们真的需要更多的磁盘空间?

sql-server disk-space datafile

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