标签: sql-server

sql server - 如何防止备份数据库文件加载到任何 SQL Server 实例上

我正在尝试查找是否有任何方法可以限制在 SQL Server 实例上加载 .bak 文件。

例子:

创建了名为“Zack”的用户,并且是名为“AdventureWorks”的数据库的 dba,他每天备份数据库并将其存储在文件夹中。

用户“Mike”可以访问 .bak 文件之一,并在本地加载整个数据库及其数据。

我们如何限制这一点并只允许授权用户恢复 SQL Sserver 中的 .bak 文件。

尝试查看 Microsoft 的多个文档,但找不到有关此用例的任何资源。当我遇到障碍时,你的见解将会非常有帮助。

sql-server sql-server-2012

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

已完成的查询仍然阻塞?

我在运行 SQL Server 2017 的服务器上的 SSMS 中遇到了一个问题,我运行了一个查询来更新数据库的所有者,并且查询消息选项卡显示查询已成功完成。然而,我很快就收到服务器问题的通知,令我惊讶的是,查询正在休眠并阻止数据库的使用。杀死 spid 解决了问题,但是这样的事情是怎么发生的呢?有什么我可以检查的吗?

sql-server

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

了解“模式”参数并查找 SQL Server 中事件属性的文档

我正在 SQL Server 中处理扩展事件会话,并遇到了我不完全理解的 T-SQL 代码的一部分。具体来说,我对以下代码部分中使用“Mode = 3 OR Mode = 4”感到困惑:

...
ADD EVENT sqlserver.latch_suspend_end
(WHERE (
Duration > 0
AND (Mode = 3 OR Mode = 4)
AND has_waiters = 1
)
)
...
Run Code Online (Sandbox Code Playgroud)

我一直在尝试寻找文档或任何类型的信息来解释“Mode = 3”和“Mode = 4”在这种情况下代表什么,但到目前为止,我还没有运气。

此外,我有兴趣找到描述不同事件的属性和可能值的文档或参考的综合来源,而不仅仅是针对这个特定示例。有人可以向我指出相关文档或解释这些模式值在此扩展事件会话中的含义吗?

预先感谢您的帮助!

sql-server documentation extended-events

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

每当标识列数据类型值即将达到其最大限制时,SQL Server 就会发出警报机制

我只想监视每当标识列数据类型值即将达到其最大限制时它会在何处引发警报。

\n

例如,我有一个“A”表,该表具有Id包含 2,147,483,000 行的整数标识。众所周知,SQL Server 整数限制为 +-2,147,483,647

\n

整数Id标识列即将达到其最大限制。

\n

我尝试使用 max(整数数据类型) 函数查询所有数据库表,并与自己的限制进行比较。但这是相当昂贵的。

\n

我需要标识列数据类型的列表及其表名,该值即将达到其最大限制。

\n

\xc4\xb0s 有任何方法可以做到这一点,例如自动通知的内置警报机制,或者我需要创建一个使用 max 函数查询表的作业等。

\n

sql-server

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

有哪些明智的方法可以处理 70 台服务器的 700 个数据库中的 4,000 个漏洞

我在这里寻找想法。我继承了一个大型 SQL 资产,其中包含多种配置的多台服务器,该资产已经增长了 10-15 年,并且没有特定的 DBA 技能人员负责。我是第一个加入该组织的 DBA(也是目前唯一的一个)。

正如标题所示,大约 70 个服务器上有大约 700 个数据库,它们具有不同的功能,并且其中的安全方法也不同。本地开发和供应商提供的数据库的混合。

我在整个庄园安装了 Microsoft 监控代理,以便在 Azure 中构建对正在发生的情况的概述 - 事实证明存在相当多的问题。

我不太确定从哪里开始。例如,我可以首先解决严重程度较高的问题。识别应该退役的服务器也有一定的难度。我已经升级了运行不受支持的 SQL 版本(2012 及之前版本)的服务器。

但很多建议都是诸如“禁用 SA 帐户”之类的内容,这并不总是像听起来那么简单,特别是如果它被用于驱动某些数据库功能的话。

你会从哪里开始?你会怎么办?

Azure 漏洞截图

security sql-server vulnerability-assessment

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

是否可以创建没有事务日志的数据库?

最近有人告诉我,可以在 SQL Server 中创建一个没有事务日志的新数据库。我使用 SQL Server 很长时间了,但从未见过它被完成,而且我认为这是不可能的。我已经浏览了 Microsoft 文档中的“CREATE DATABASE”语法,但找不到任何有关它的信息,但有时我可能会失明,可能会错过它。

可以创建一个没有事务日志的数据库吗?如果是这样,有人可以指出我的文档吗?

需要明确的是,我并不是在谈论将数据库附加到日志。我知道可以附加一个带有事务日志的数据库。我也不是在谈论日志备份。

谢谢。

sql-server transaction-log

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

备份和快照之间的区别

我一直在阅读一篇又一篇关于数据库备份和快照之间区别的文章,但它们没有任何意义,所以请帮助我理解

\n
\n

“快照是系统/卷在特定时间点的映像。”

\n

“备份是执行备份时整个系统/卷的副本。”

\n
\n
    \n
  1. 一切都是在某个时间点完成的。这就是物理学的原理。除非你生活在一个不存在时间的黑洞里。这句话对我来说毫无意义。备份是在制作时制作的。是的。呃。这究竟意味着什么。
  2. \n
  3. 我不知道数据库的“图像”应该是什么。这个类比对我来说毫无意义。它们只是意味着“副本”吗?备份也是数据库的副本。再说一遍,它们对我来说都是一样的。
  4. \n
\n
\n

“快照仅保留自上次快照以来数据库的更改\ns”

\n
\n
    \n
  1. 但我还没有拍过快照。这将是第一个。那么快照会是什么样的呢?由于没有上次快照,因此自上次快照以来没有任何更改。会...与备份完全相同吗?
  2. \n
\n
\n

“快照制作速度快且尺寸小”

\n
\n
    \n
  1. 再说一次,这是我的第一张快照。它如何神奇地比备份更快、更小?或者这只是一个谎言?
  2. \n
\n

编辑:来源:(来自备份与快照的所有顶级谷歌结果)

\n

https://phoenixnap.com/kb/snapshot-vs-backup

\n
\n

快照是您的系统/卷在特定时间点的映像。\n

\n

备份是执行备份时整个系统/卷的副本。\n

\n
\n

https://www.sqlshack.com/understanding-database-snapshots-vs-database-backups-in-sql-server/

\n
\n

数据库快照就像数据库在某个时间点的视图。

\n

快照备份的另一个用途是可以为数据库创建\n多个快照,并且可以在不同的时间点\n获取这些快照

\n

可以随时创建备份。快照是数据库的\xe2\x80\x9c时间点\xe2\x80\x9d\n副本。

\n
\n

https://simplebackups.com/blog/backups-vs-snapshots-with-differences-and-examples/#what-is-a-server-or-a-file-backup

\n
\n

快照很小,可以快速轻松地制作,而不会对服务器产生太大影响。

\n
\n

sql-server backup snapshot

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

如何区分运行时错误和其他错误?

请考虑以下错误消息。

消息 207 级别 16 状态 1 第 7 行

列名“FOO”无效。

由于我触发它的方式,我碰巧知道这是一个解析/编译时错误。

假设我正在运行一个不属于过程的长脚本,并且我收到了相同的错误消息。此错误消息中的内容告诉我错误是在解析/编译时而不是运行时发生的?


CREATE TABLE Department_History
(
    DepartmentNumber INT
);
GO

ALTER TABLE Department_History ADD FOO INT;

-- This is fine and shows FOO.
SELECT * FROM Department_History;

-- When uncommented, this fails at parse time.
INSERT Department_History (DepartmentNumber, FOO) VALUES (4, 5), (6, 7), (8, 9);
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql errors

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

有什么方法可以链接“开始”和“完成”事件吗?

在 SQL Server 扩展事件中,是否有任何方法可以将“开始”事件(例如 )rpc_starting与“完成”事件(例如 )链接起来rpc_completed?例如,是否有类似相关 ID 的东西可以唯一标识对 SQL Server 的调用?

我想查询记录的事件,以获取通话的开始时间(来自 )rpc_starting及其持续时间(来自 )rpc_completed。到目前为止,我还没有找到任何方法来唯一链接同一调用的开始和结束。

我认为该request_id操作可能会起作用,但对于我查看过的事件,它似乎显示为 0。

sql-server extended-events

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

T-SQL 将当前时间向下舍入到最后 15 分钟时间段

我想选择过去 15 分钟内的数据,例如:

在 12.02 我想要从 11:45 到 12:00 的行

在 12.09 我仍然想要从 11:45 到 12:00 的行

在 12.18 我想要从 12:00 到 12:15 的行

数据以datetime2格式存储,我使用的是2019标准版。感谢任何帮助让我开始。规范稍后可能会更改(例如,10 分钟而不是 15 分钟),但我希望能够自己解决这个问题。

谢谢

sql-server t-sql

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