标签: sql-server

如何在 SQL Server 2008 中分配整个 Active Directory 组的安全访问权限?

我想在我的内部应用程序中使用集成安全性,这些应用程序都在一个域中。不幸的是,我一直无法让它正常工作。我想在 SQL Server 中为整个 Exchange (Active Directory) 组分配一个角色,以便对某些表进行读/写访问。这样我就不必在有人被雇用时创建操作员或在有人被解雇时删除操作员。这可能吗?我将采取哪些步骤来做到这一点?

sql-server-2008 security sql-server role active-directory

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

Transact-SQL 查询中字符串前的 N 前缀

请您告诉我,我什么时候应该在 Transact-SQL 查询中的字符串前使用 N 前缀?我已经开始使用一个数据库,使用这样的查询我没有得到任何结果

SELECT * FROM a_table WHERE a_field LIKE '%?_pattern%'
Run Code Online (Sandbox Code Playgroud)

直到我将模式更改为N'%?_pattern%'. 过去我从来没有添加过这个前缀,所以我很好奇。a_field被定义为nvarchar(255),但我认为原因是别的。

sql-server varchar

41
推荐指数
2
解决办法
6万
查看次数

将 SQL Server 2012 备份还原到 SQL Server 2008 数据库?

有没有办法将 SQL Server 2012 数据库备份还原到 SQL Server 2008?

我试图附加文件,它不起作用。

sql-server-2008 sql-server sql-server-2012

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

为什么 SQL Server 消耗更多的服务器内存?

SQL Server 占用了我服务器 RAM 的 87.5%。这最近造成了很多性能瓶颈,例如缓慢。我研究了这个问题。我可以在 Internet 上找到的一种常见解决方案是设置 SQL Server 的最大限制。这已经完成并且获得了很大的改进。我想知道为什么如果没有设置最大内存值为什么 SQL Server 不断消耗资源

sql-server memory sql-server-2008-r2

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

select * 在 SQL Server 2012 上仍然是一个很大的禁忌吗?

在过去的日子里,这被认为是一个很大的禁忌select * from tableselect count(*) from table因为性能受到影响。

在 SQL Server 的更高版本中是否仍然如此(我使用的是 2012,但我想这个问题适用于 2008 - 2014)?

编辑:由于人们似乎在这里稍微批评我,我是从基准/学术的角度来看这个的,而不是这是否是“正确”的事情(当然不是)

sql-server select sql-server-2012

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

外部应用与左连接性能

我正在使用 SQL SERVER 2008 R2

我刚刚在 SQL 中遇到 APPLY 并且喜欢它如何解决如此多情况下的查询问题,

我使用 2 个左连接来获得结果的许多表,我能够获得 1 个外部应用。

我的本地数据库表中有少量数据,部署后代码应该在至少 20 倍大的数据上运行。

我担心对于大量数据,外部应用可能需要比 2 个左连接条件更长的时间,

谁能告诉我 apply 究竟是如何工作的,以及它如何影响非常大数据的性能,如果可能的话,每个表的大小有一些比例关系,比如与 n1^1 或 n1^2 成比例......其中 n1 是表中的行数1.

这是带有 2 个左连接的查询

select EC.*,DPD.* from Table1 eC left join
  (
   select member_id,parent_gid,child_gid,LOB,group_gid,MAX(table2_sid) mdsid from Table2
   group by member_id,parent_gid,child_gid,LOB,group_gid

  ) DPD2 on DPD2.parent_gid = Ec.parent_gid
        AND DPD2.child_gid = EC.child_gid
        AND DPD2.member_id = EC.member_id
        AND DPD2.LOB = EC.default_lob
        AND DPD2.group_gid = EC.group_gid
  left join
  Table2 dpd on dpd.parent_gid = dpd2.parent_gid 
            and …
Run Code Online (Sandbox Code Playgroud)

join sql-server cross-apply

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

如何恢复“包含”的数据库?

我最近尝试将来自网络实例的备份恢复到我的本地开发 SQL Server。令我惊讶的是,我收到以下错误消息:

消息 12824,级别 16,状态 1,第 3 行 sp_configure 值 'contained database authentication' 必须设置为 1 才能恢复包含的数据库。您可能需要使用 RECONFIGURE 来设置 value_in_use。消息 3013,级别 16,状态 1,第 3 行 RESTORE DATABASE 异常终止。

我必须遵循哪些步骤才能成功恢复数据库?

sql-server backup restore contained-database

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

什么时候创建 STATISTICS 比创建索引更好?

我找到了很多关于什么 的信息STATISTICS:如何维护它们,如何从查询或索引手动或自动创建它们,等等。但是,我一直无法找到有关何时的任何指导或“最佳实践”信息创建它们:在哪些情况下,手动创建的 STATISTICS 对象比索引更受益。我已经看到手动创建的过滤统计有助于对分区表的查询(因为为索引创建的统计覆盖了整个表而不是每个分区——brillaint!),但肯定有其他场景可以从统计对象中受益,同时不需要索引的详细信息,也不值得维护索引或增加阻塞/死锁机会的成本。

@JonathanFite 在评论中提到了索引和统计数据之间的区别:

索引将通过创建排序与表本身不同的查找来帮助 SQL 更快地找到数据。统计信息帮助 SQL 确定满足查询需要多少内存/工作量。

这是很好的信息,主要是因为它帮助我澄清了我的问题:

如何知道这(或在任何其他技术信息什么S和如何S的相关的行为和性质STATISTICS)帮助确定何时选择CREATE STATISTICSCREATE INDEX创建索引将创建相关的时候,尤其是STATISTICS对象?什么情况下只有统计信息而没有索引会更好地服务?

如果可能的话,有一个场景的工作示例,其中STATISTICS对象比INDEX.


由于我是一名视觉学习者/思考者,我认为将esSTATISTICSINDEXes之间的差异并排查看可能有助于确定何时STATISTICS是更好的选择。

Thingy           PROs                             CONs
-------          ----------                       -------------------
INDEX            * Can help sorts.                * Takes up space.
                 * Contains data (can             * Needs to be maintained (extra I/O).
                   "cover" a …
Run Code Online (Sandbox Code Playgroud)

sql-server best-practices statistics index-statistics

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

为什么添加 TOP 1 会显着降低性能?

我有一个相当简单的查询

SELECT TOP 1 dc.DOCUMENT_ID,
        dc.COPIES,
        dc.REQUESTOR,
        dc.D_ID,
        cj.FILE_NUMBER
FROM DOCUMENT_QUEUE dc
JOIN CORRESPONDENCE_JOURNAL cj
    ON dc.DOCUMENT_ID = cj.DOCUMENT_ID
WHERE dc.QUEUE_DATE <= GETDATE()
  AND dc.PRINT_LOCATION = 2
ORDER BY cj.FILE_NUMBER
Run Code Online (Sandbox Code Playgroud)

这给了我可怕的表现(就像从不费心等待它完成一样)。查询计划如下所示:

在此处输入图片说明

但是,如果我删除它,TOP 1我会得到一个看起来像这样的计划,它会在 1-2 秒内运行:

在此处输入图片说明

下面更正 PK 和索引。

TOP 1更改查询计划这一事实并不让我感到惊讶,我只是有点惊讶它使情况变得更糟。

注意:我已经阅读了这篇文章的结果并理解了 aRow Goal等的概念。我很好奇的是如何更改查询以使其使用更好的计划。目前我正在将数据转储到临时表中,然后从中取出第一行。我想知道是否有更好的方法。

编辑对于事后阅读本文的人,这里有一些额外的信息。

  • Document_Queue - PK/CI 是 D_ID,它有大约 5k 行。
  • Correspondence_Journal - PK/CI 是 FILE_NUMBER,CORRESPONDENCE_ID,它有大约 140 万行。

当我开始时,没有其他索引。我在 Correspondence_Journal (Document_Id, File_Number) 上找到了一个

performance sql-server sql-server-2008-r2 query-performance performance-tuning

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

LocalDB v14 为 mdf 文件创建错误的路径

最近,我使用 SQL Server Express 安装程序和此说明将 LocalDB 从版本 13 升级到 14 。安装后,我停止了现有的13版默认实例(MSSQLLOCALDB)并创建了一个新实例,该实例自动使用了v14.0.1000服务器引擎。

我经常使用 LocalDB 进行数据库集成测试,即在我的 xunit 测试中,我创建了一个(临时)数据库,该数据库在测试完成时被删除。由于新版本,不幸的是,由于以下错误消息,我所有的测试都失败了:

CREATE FILE 在尝试打开或创建物理文件“C:\Users\kepflDBd0811493e18b46febf980ffb8029482a.mdf”时遇到操作系统错误 5(访问被拒绝。)

奇怪的是,mdf 文件的目标路径不正确,在C:\Users\kepflDBd0811493e18b46febf980ffb8029482a.mdf(这是单个测试的随机数据库名称)之间缺少反斜杠。数据库是通过简单的命令创建的CREATE DATABASE [databaseName]——这里没有什么特别的。

在 SSMS 中,我看到数据、日志和备份的目标位置如下:

LocalDB 目标位置

但是,当我尝试更新位置时,我收到另一条错误消息:

尝试更新时出现错误消息

如何更新默认位置以便 LocalDB 能够再次创建数据库?很明显,LocalDB 没有正确组合默认位置目录和数据库文件名 - 是否有我可以编辑的注册表项?或者别的什么?

在 Doug 的回答和 sepupic 的评论后更新

根据这个 Stackoverflow question,默认位置也应该可以通过注册表更改。但是,如果我尝试查找相应的键“DefaultData”、“DefaultLog”和“BackupDirectory”,则无法在我的注册表中找到它们。SQL Server v14 是否重命名了这些注册表项,或将这些信息移出了注册表?

sql-server sql-server-localdb

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