在过去的几周里,我一直在对旧的 Firebird 数据库发火。由于各种原因,这个数据库很糟糕,但我注意到的一件事是每个表的每个字段都有两个索引;每一个都有一个片段,一个按顺序,一个按顺序。asc
desc
除了为每个表中的每个字段都有一个索引的重要性之外,它让我思考 - 单段索引有两个具有相同索引段但一个 indesc
一个 in 的索引有什么优势asc
吗?有什么可以得到的,或者现代 DBMS 是否会简单地使用asc
索引并从头开始并在需要时向后工作?
我们有几个 SQL Server 2008 R2 数据库,其中的成员域发生了更改(即它已连接到DOMAINA
并且现在位于DOMAINB
)。我们有三个数据库,其中数据库的所有者是DOMAINA\User
,该数据库不再存在。
我试图登录到SQL Server作为DOMAINB\Administrator
和sa
和运行以下命令:
ALTER AUTHORIZATION ON DestDB TO sa
Run Code Online (Sandbox Code Playgroud)
错误:
消息 15151,级别 16,状态 1,第 1 行
找不到对象“DestDB”,因为它不存在或您没有权限。
我在(显然不正确的)假设下sa
可以在服务器上做几乎任何事情。
我怎样才能取回这些数据库的所有权?
我们正在我们的系统中实施一项新功能,这将导致smallint
每晚从表中清除大约一百万条记录(每条记录都很小,基本上是一个 GUID、一个日期和四个字段)。基本上它是一个缓存表,一旦数据存在 7 天,我们就会:
DELETE FROM scheduleCache WHERE schDateCreated < '2013-08-26
这将在每晚凌晨 1 点运行,每次运行将清除大约一百万条记录。
对于这样的桌子,我应该注意或做些什么吗?我应该把什么属性放在桌子上,或者我应该定期运行什么程序来“清理”?我以前从未处理过这样的桌子。
该表有一个聚集索引(GUID + 一个smallint
字段),我们有每周一次的索引重建,每周日早上运行。
我们有一个供应商提供的应用程序。它正在支持中,我们正在与他们的开发人员交谈(我们拥有他们最大的数据库大小一个数量级),但与此同时,我们有以下每天运行数千次的查询,只有部分更改了ABCDEFG12345
在where
条款中。where's 中的几乎所有内容都是可定制的,因为它是由他们的主要工作搜索生成的查询。
dJobs 表中大约有 500,000 条记录,连接表中的记录数也差不多:
select * from (
select top 20 * from (
select top 20
( --Start Count
select count(*) from dJobs
left join dClients on cltClientID = jobClientId
left join dJobStatus ON jbsID = jobJobStatus
where ((jobSupervisor= -1.00000000 or jobCoordinator= -1.00000000 ) OR 1=1 )
and
(
(jobjobStatus=0 OR (0=0 AND 0=0))
AND (jbsType=0 OR (0=0 AND 0=0))
AND (jobPriority=0 OR (0=0 AND 0=0))
AND (jobEventID=0 OR (0=0 AND 0=0))
AND …
Run Code Online (Sandbox Code Playgroud) performance sql-server sql-server-2008-r2 query-performance performance-tuning
我一直在使用基于 MicrosoftEXEC sp_help_revlogin
脚本的脚本来同步主机之间的 SQL Server 用户名和密码。这在 SQL Server 2008 R2 上已经运行了很长时间,但是随着我们计划迁移到 SQL Server 2014,我遇到了一个障碍。
我有三台暂存 SQL Server 2014 机器。在所有服务器上,我运行以下命令:
CREATE LOGIN [TestAccount]
WITH PASSWORD = N'1234567890',
DEFAULT_DATABASE = [master],
CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF
Run Code Online (Sandbox Code Playgroud)
对于其中两个,我得到一个生成的“创建”命令:
CREATE LOGIN [TestAccount]
WITH PASSWORD = 0x010075DDCA54FCEF12CB11C4E64040E877B9FF5872C41EB98095 HASHED,
SID = 0xCA78345104805C4E89004969D05D551B,
DEFAULT_DATABASE = [master],
CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF
Run Code Online (Sandbox Code Playgroud)
凉爽的。到现在为止还挺好。但是,在第三台服务器上,我收到了一个“创建”命令:
CREATE LOGIN [TestAccount]
WITH PASSWORD = 0x02002F6CB52E7F571AD422689021EB9EC1BE2AB4576AE6EC12485333A4CB892A9197B440E1471376A5AAC5160847F636A637D1F499880D7653ABC4DB4714746856E01DE41E09 HASHED,
SID = 0x19337EA32254A64F8FC018474B58DBA5,
DEFAULT_DATABASE = [master],
CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF
Run Code Online (Sandbox Code Playgroud)
哪个不起作用。哈希太大了。 …