小编Sql*_*ide的帖子

延长事件持续时间是毫秒还是微秒?

在这个论坛上有一个关于扩展事件module_end持续时间单位的问题,我回答了这个问题。详情请看这里

对于所有事件,它总是以微秒为单位吗?

sql-server extended-events

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

我应该从数据库角色 db_owner 中删除 dbo 吗?

我今天对我的数据库进行了漏洞评估。我找到了 VA2108,它建议我

ALTER ROLE [db_owner] DROP MEMBER [dbo]
Run Code Online (Sandbox Code Playgroud)

但它是任何 SQL 实例的默认设置。

我应该去吗?有什么风险吗?

在此处输入图片说明

谢谢

security sql-server azure-sql-database vulnerability-assessment

11
推荐指数
2
解决办法
1953
查看次数

除了清除计划缓存和(显然)更改内存设置之外,更改 Max Server Memory 还能做什么?

在 32 GB 内存和 4 个内核、60-80 个并发连接、大量临时工作负载上运行 SQL Server 2012 SP3,我们看到 SQL Server 进程 (CPU) 出现峰值,并且在不可预测的时间每天保持一两次峰值。我们正在努力确定峰值的根本原因。与此同时,我们发现改变最大内存设置(向上或向下)似乎是唯一能让 CPU 负载恢复正常的方法。

检查日志并搜索 StackExchange ( https://dba.stackexchange.com/a/183276 ),我们看到计划缓存正在通过更改最大内存设置进行刷新。但是,如果我们通过 DBCC FREESYSTEMCACHE('SQL Plans') 刷新计划缓存,则 CPU 负载不会恢复正常。

由于无论天气如何增加或减少它,更改最大内存设置都可以解决问题,因此该问题似乎与最大服务器内存设置没有直接关系。因此,我们试图了解更改内存设置还有什么作用,然后使用该信息来帮助确定 CPU 峰值的根本原因。

performance sql-server

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

如何向用户定义的服务器角色授予对象权限?

我想创建被授予访问权限的登录名

  • 所有用户数据库
  • 查看所有定义

  • 选择所有表的所有记录

对我来说,将登录名分配给每个数据库并将其添加到自定义 db 角色或每个 db 中的默认 db 角色(如 db_datareader)似乎开销太大。

相反,我尝试使用用户定义的服务器角色。

  • 但是如何将所需的权限分配给用户定义的服务器角色以允许查看所有数据库的任何定义和 db_datareader?

  • 这甚至可能吗?

security sql-server permissions role sql-server-2016

6
推荐指数
1
解决办法
703
查看次数

当参数不为空时,SQL geography::point null 参数错误?

我收到此错误:

'geography::Point' failed because parameter 1 is not allowed to be null.
Run Code Online (Sandbox Code Playgroud)

在这个sql上:

SELECT [ID], geography::Point([lat], [long], 4326) AS [loc]
FROM (
  SELECT [ID], CONVERT(float, [lat]) AS [lat], CONVERT(float, [long]) AS [long]
  FROM (
    SELECT [ID], [lat], 
    [long], ROW_NUMBER() OVER (PARTITION BY [ID] ORDER BY [EFFDT] desc) AS [sequence]
    FROM [GEO]
  ) AS temp1
  WHERE [sequence] = 1
  AND [lat] IS NOT NULL
  AND [long] IS NOT NULL
) AS temp2
ORDER BY [ID]
Run Code Online (Sandbox Code Playgroud)

但那里没有空值,而且我只在我们的生产计算机(Production 13.0.4422.0)上收到错误,而在我们的开发计算机(Dev 13.0.1728.2)上却没有收到错误。经过几个小时的搜索和重试后,我发现通过重新排序一些东西,这是可行的:

SELECT [ID], [loc] …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql spatial sql-server-2016

6
推荐指数
1
解决办法
5203
查看次数

移动 tempdb .ndf 文件的最佳方法

在 SQL Server 安装过程中,我“认为”我将 tempdb 的位置指定在“F:”而不是“C:”上,但我可以看到,虽然 tempdb.mdf 和 templog.ldf 位于“F:”上,但 3 。 ndf 辅助数据文件位于“C:”上。

我正在考虑通过执行以下步骤来移动 .ndf 文件:

    1.
    ALTER DATABASE tempdb MODIFY FILE ( NAME = temp2 , FILENAME = 'F:\MSSQLData\temp2' )
    ALTER DATABASE tempdb MODIFY FILE ( NAME = temp3 , FILENAME = 'F:\MSSQLData\temp3' )
    ALTER DATABASE tempdb MODIFY FILE ( NAME = temp4 , FILENAME = 'F:\MSSQLData\temp4' )
Run Code Online (Sandbox Code Playgroud)
  1. 停止 SQL Server(该实例当前未执行任何操作)。
  2. 将 3 个 .ndf 文件从当前 C: 位置复制/粘贴到新的 F:\MSSQLData\ 位置
  3. 重新启动 SQL Server。
  4. 检查它是否有效:
    SELECT name, physical_name AS …
Run Code Online (Sandbox Code Playgroud)

sql-server configuration tempdb alter-database

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

获取具有最大日期的记录的行 ID

您好,我有一张包含这些列的表格

ID(每新行增加 1)、人员、会议日期

我正在使用此查询为每个人选择最后一次会议

SELECT Person, MAX(MeetingDate) FROM MyTable
GROUP BY Person
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得每个人最后一次会议的 ID?

谢谢

sql-server

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

数据库快照进入 SUSPECT 模式(WIN2K8R2 上的 SQL 2014)

我希望这里有人可能遇到过这种问题,如果是这样,你做了什么来解决它?

以下是一些详细信息:

数据库服务器:SQL 2014 Enterprise (12.0.4100.1) 操作系统:Windows 2008R2 Enterprise

数据驱动器:800GB

数据库快照:430GB

我可以创建这个数据库的多个快照,它们运行得非常好,直到磁盘上的实际大小达到 38.1GB。此时驱动器上仍有超过 150GB 的可用空间。之后 SnapShot 文件遇到 IO 错误并且快照进入 SUSPECT 模式。这是 SQL ERRORLOG 中的错误消息:

操作系统返回:

在文件 'E:\SQL Data 1\devDB_seq1501_rba63692865.ss' 中的偏移量 0x00002dc1520000 处写入 SQL Server 时出现错误 665(由于文件系统限制,请求的操作无法完成)。SQL Server 错误日志和系统事件日志中的其他消息可能会提供更多详细信息。这是一种严重的系统级错误情况,会威胁数据库的完整性,必须立即纠正。完成完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。

E:\SQL Data 1\devDB_seq1501_rba63692865.ss: 遇到操作系统错误 665(由于文件系统限制,请求的操作无法完成)。

数据库快照“devDB_seq1501_rba63692865”的 IO 操作失败并被标记为可疑。它必须被删除并重新创建。

这篇文章:https : //support.microsoft.com/en-us/kb/2002606在严重碎片化的文件系统上提到了类似的问题(665 错误),但我不确定如何解决这个问题。

对这里可能发生的事情的任何见解将不胜感激。

sql-server snapshot

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

dbo.SORT 临时运行存储:148643705716736' 这个数字是什么意思?

我完全理解这个错误意味着什么以及如何解决。

我的问题是这个数字(148643705716736)指的是什么?

日期 5/7/2018 1:36:58 AM

登录 SQL Server(当前 - 5/7/2018 2:31:00 AM)

源 spid125

信息

无法为数据库 'tempdb' 中的对象 'dbo.SORT 临时运行存储:148643705716736 '分配空间, 因为 'PRIMARY' 文件组已满。通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。

sql-server tempdb sql-server-2016

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

sqlcmd 新登录名/用户

我是 sqlcmd 的新手,我想创建一个新用户。我做了以下工作:

1> CREATE LOGIN FYI_DBA WITH PASSWORD = 'V_2017'
2> go
1> CREATE USER FYI_DBA FOR LOGIN FYI_DBA
2> go
Run Code Online (Sandbox Code Playgroud)

然后在 cmd 提示符下我运行了以下命令:

sqlcmd -s LOCALHOST -U 'FYI_DBA' -P 'V_2017'
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user ''FYI_DBA''..
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

sql-server sqlcmd

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