我正在尝试创建一个SQL Server 2008 R2只能从一个 SQL 视图中进行选择的新数据库用户。但是,无论我在以这个新用户身份登录时尝试什么,我都可以从任何表中进行选择。我运行了这个查询:
select princ.name
, princ.type_desc
, perm.permission_name
, perm.state_desc
, perm.class_desc
, object_name(perm.major_id)
from sys.database_principals princ
left join
sys.database_permissions perm
on perm.grantee_principal_id = princ.principal_id
WHERE princ.name = 'public'
AND object_name(perm.major_id) = 'User_Table'
Run Code Online (Sandbox Code Playgroud)
并得到这些结果:
name type_desc permission_name state_desc class_desc (No column name)
public DATABASE_ROLE DELETE GRANT OBJECT_OR_COLUMN User_Table
public DATABASE_ROLE INSERT GRANT OBJECT_OR_COLUMN User_Table
public DATABASE_ROLE REFERENCES GRANT OBJECT_OR_COLUMN User_Table
public DATABASE_ROLE SELECT GRANT OBJECT_OR_COLUMN User_Table
public DATABASE_ROLE UPDATE GRANT OBJECT_OR_COLUMN User_Table
Run Code Online (Sandbox Code Playgroud)
这是否意味着无论登录到数据库的任何人都具有基于“公共”权限的完全访问权限?
sql-server-2008 security sql-server permissions sql-server-2008-r2
我为多对多关系创建了一个连接表。
该表中只有 2 个列,ticketid并且groupid
典型的数据是
groupid ticketid
20 56
20 87
20 96
24 13
24 87
25 5
Run Code Online (Sandbox Code Playgroud)
我的问题是在创建复合键时我应该ticketid遵循groupid
CONSTRAINT [PK_ticketgroup] PRIMARY KEY CLUSTERED
(
[ticketid] ASC,
[groupid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
或者groupid反过来ticketid
CONSTRAINT [PK_ticketgroup] PRIMARY KEY CLUSTERED
(
[groupid] ASC,
[ticketid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = …Run Code Online (Sandbox Code Playgroud) 这个说法正确吗?
在幕后 SQL Server 实际上将视图中的数据存储为物理表,如果视图背后的任何数据发生更改,则必须更新该物理表
我做了一些搜索,但找不到任何关于视图如何在 SQL Server 中工作的资源。我一直认为除非您使用索引/物化视图,否则视图不会占用任何额外的数据空间。
谢谢
我有 SQL Server 2008 R2 Express 版本,我想将该数据库中的数据导出到另一台计算机,以便我可以在该计算机中再次导入它。
请问怎么样?
在数据库中右键->任务->导出->设置服务器名+密码+设置数据库源。
我发现我必须设置目的地,但我没有找到目的地作为文件或类似的东西,我只是发现目的地是我从中提取数据的同一个数据库。
请帮助,提前致谢
我们正在使用 SQL 2008 R2 创建一个三节点三实例集群(不是最先进的,但这是应用程序支持的),并认为它应该能够在两个物理节点关闭的情况下维持仲裁。配置它的最佳方法是什么?
我的经理一直在推动一个见证服务器,它就像在节点和磁盘多数之上进行额外的法定投票。这给了我们每个节点的投票,为仲裁磁盘投票,但是是否可以设置一个接收投票的见证服务器?
我认为见证是用于镜像的,我们没有计划在这个集群上实施。有人告诉我,添加第四个节点是不可能的,即使它只是一个被动节点。
我想打开AllowRowLocks=ON多个索引。其中一些索引位于大表上,我真的不想重建或重新组织索引。
从MSDN文章中不清楚是否会重建索引。
作为此问题的次要相关部分,MSDN 文章指出正在逐步淘汰 this 的使用,不应再使用:
此功能将在 Microsoft SQL Server 的下一版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。而是使用 ALTER INDEX (Transact-SQL)。
看着ALTER INDEX,您似乎被迫重建或重组。我理解正确吗?通过ALTER INDEX我可以重置这个行锁定选项吗?
我需要一个 power-shell 脚本来获取以下信息 数据库名称、数据库的 LastBackupDate 并且这些信息应该通过电子邮件发送,将结果转换为 HTML 格式:) 如果我们有机会完成脚本,这将是 .ps1 文件我需要知道如何作为 sql 作业运行。
在查看 SQL Server 中数据文件使用的空间时,SQL 报告的内容与 Windows 之间存在很大差异。
这怎么解释?

我有一些每天和每周的任务,我在其中运行脚本来获取所需的信息。运行此代码一次并访问所有服务器而无需分别登录每个服务器的方法是什么?
我一直在运行公司购买的某些软件的服务器上进行一些维护,因此我无法真正更改查询的编写方式。我使用了一些工具来确定服务器上一些缺失的索引。但是,使用我的工具,我没有看到哪些查询指示了这些。但是,我确实会监视正在写入和读取的索引量。
所以,我的问题是,在添加已确定为缺失的新索引时,SQL Server 何时注意到新索引并确定它们是否真的有助于查询?是在创建索引后立即再次运行查询,还是更复杂?
performance sql-server execution-plan sql-server-2008-r2 index-tuning
sql-server ×10
index ×2
index-tuning ×2
backup ×1
clustering ×1
datafile ×1
disk-space ×1
performance ×1
permissions ×1
powershell ×1
primary-key ×1
security ×1
t-sql ×1
view ×1