标签: sql-server-2012

SA 帐户需要称为“SA”还是我可以安全地重命名它?

我们的网络上有一些应用程序(在我之前)在其 SQL Server 连接字符串中使用 SA 帐户。它在源代码中是硬编码的,无论出于何种原因,我们都无法更改它 - 我的问题不是我们为什么要更改它,而是解决它。

我正在考虑将 SA 帐户重命名为其他名称(例如“SysAccount”或类似名称,并为其提供新密码),然后使用旧密码创建一个名为“SA”的新帐户并授予其适用于应用程序的权限(显然不是 sysadmin 角色的成员)。这样做有什么陷阱吗?如果名为 SA 的帐户实际上不是系统管理员,SQL Server 是否会遇到已知问题?

我假设因为我只是重命名帐户,所以我是安全的 - 它的 uid 仍然为 0x01,我已经测试过了,它在物理上是可行的,并且在测试中似乎可以正常工作,但我想确保我并没有忽视任何会因此而明显破裂的东西。如果它破坏了某些东西,我总是可以删除新的 SA 并将旧的 SA 重命名回以消除损坏,但希望避免尝试和失败。

我正在使用 SQL Server 2012,但我怀疑相同的答案将适用于任何现代版本。我已经看到了从 2005 年升级到 2008 年的错误,如果你这样做了,但我想这个问题早就解决了。

sql-server sql-server-2012

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

使用此用户还原后,将 SQL Server 用户重新绑定到其登录名

在执行 SQL Server (v12.0.2000) 数据库的还原后,我认为需要将用户重新映射到其登录名(这个问题似乎被称为孤儿用户)。最简单的方法之一是执行:

use [MyDatabase];
alter user MyUser with login = MyUser;
Run Code Online (Sandbox Code Playgroud)

然而,在实现恢复后,该USE命令失败了,因为我试图用 执行上述命令'MyUser',这是孤立的...

因为它是在脚本中,所以我想避免restore与一个用户和alter user另一个用户执行 a ,以便第一个用户正确地重新映射到其登录名。

有没有办法用“MyUser”来做到这一点(谁可以毫无问题地连接到主人)?

我通过以下方式完全限定“MyUser”进行了尝试,但没有成功:

use master;
alter user MyDatabase.MyUser with login = MyUser;
Run Code Online (Sandbox Code Playgroud)

知道这是否可能以及如何做到吗?

sql-server sql-server-2012 users logins

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

SharePoint 2013 数据库加密

我使用 SharePoint 2013 和 SQL Server 2012 作为持久层。我需要加密存储在数据库中的数据。我偶然发现了 SQL Server 功能透明数据加密 (TDE)。

使用 TDE 时,文档库中的文件(Office 文档)会发生什么情况?文件也被加密还是只加密表?

sharepoint encryption sql-server-2012 transparent-data-encryption

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

显示所有存储过程定义(内容)以供编辑

抱歉,如果之前有人问过这个问题,建议的“相关”问题不相关,而且我自己的搜索结果很少。

我需要列出所有存储过程的定义(代码),以便我可以开始处理所有 450 个并添加分号以实现 v2014 标准。

我在这里找到了以下代码并稍微修改了它:

SELECT
    obj.Name AS SPName,
    REPLACE(modu.definition, 'CREATE PROC', 'ALTER PROC') + 'GO' AS SPDefinition
FROM
    sys.sql_modules modu INNER JOIN
    sys.objects obj ON modu.object_id = obj.object_id
WHERE
    (obj.type = 'P')
ORDER BY
    obj.name;
Run Code Online (Sandbox Code Playgroud)

上面的代码是使用 SA 帐户运行的。

认为这正是我需要的,但是,我刚刚注意到 MSDN 上有人声称它没有按预期显示全文

将结果粘贴到 SSMS 编辑器中时,我有 46,000 行代码需要处理,因此如果缺少任何内容,对我来说并不明显。我想确保在编辑器中浪费一天之前我已经正确地开始了这个过程。

因此,我正在联系您的专业人士,询问这是否是这种方法的真正缺点,或者是否有替代方法而不是一个一个?

sql-server stored-procedures t-sql sql-server-2012

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

SQL Server 2012 - SA 帐户探测

在我的一台服务器(Win 2012 R2)上,SQL Server 2012 不断受到攻击,SA 帐户每秒被攻击 10 次,使用不同的密码。我没有 SA 帐户,但我仍然想停止这种探测,因为它可能会消耗资源。我一直在手动检查日志并在防火墙级别阻止有问题的 IP,但我仍然想要一个更好的解决方案。SQL Server 使用 IIS 在本地运行以为其网站提供服务,我只需要远程连接到 SQL Server 以使用 SSMS 进行数据库开发,所以起初我想设置一个 VPN,但不确定这是否会与 SSMS 和其他服务一起使用像 FTP。作为临时解决方案,我可以通过禁用端口 1433 来阻止 SQL Server 在防火墙处对外界可见,或其他地方?然后我可以在开发时启用/禁用它,也许只是为了我的 IP。谢谢。

security sql-server-2012 windows-server

7
推荐指数
2
解决办法
345
查看次数

ALTER TABLE 语句与 CHECK 约束冲突

我需要检查datecom小于datelivr

create table Commande
(
Numcom int identity primary key,
Datecom date,
Datelivr date,
Codecli int foreign key references clients (Codecli) 
)

alter table Commande 
    add constraint date_check check(datediff(day,Datecom,Datelivr) > 0)
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

ALTER TABLE 语句与 CHECK 约束“date_check”冲突。冲突发生在数据库“tp4”,表“dbo.Commande”中。

这怎么会发生?

sql-server constraint alter-table ddl sql-server-2012

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

为什么数据库恢复需要这么长时间?

在我的 SQL Server 2012 x64 Std 实例上,由于事务日志昨天被填满,我有一个大事务失败,它无法回滚,SQL Server 已重新启动特定的数据库以执行恢复。

DB 大约为 750GB,tlog 达到 170GB(正在运行非常大的 ETL 作业)。该作业仅运行了几个小时,但到目前为止恢复已经花费了 24 小时以上(完成了 70%,在第 3 阶段,共 3 阶段)。

我不明白为什么要花这么长时间?磁盘上似乎没有任何压力,sys.dm_exec_requests显示它正在等待PAGEIOLATCH_EX/SH,这是我所期望的。这次我可以恢复整个数据库......

如果任何人都可以提供任何线索,将不胜感激。

编辑:根据要求,获取错误日志的输出:

Recovery of database 'MyDB' (6) is 77% complete (approximately 28100 seconds remain). Phase 3 of 3. This is an informational message only. No user action is required.
Recovery of database 'MyDB' (6) is 77% complete (approximately 28095 seconds remain). Phase 3 of 3. This is an informational message only. No …
Run Code Online (Sandbox Code Playgroud)

sql-server recovery sql-server-2012

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

由于 LSN 链中断,无法创建恢复计划

我的备份计划是:

  1. 完整备份 - 每天一次
  2. 差异备份 - 每四小时
  3. 事务日志备份 - 每 30 分钟一次。

所有数据库备份都存储在我的电脑上。

我向我的数据库添加了一些错误的更改,现在我需要在 SSMS 的帮助下将其恢复到时间点 (SQL Server 2012)。

首先我用 NORECOVERY 恢复了最后一次完整备份,它恢复成功,然后我尝试用 NORECOVERY 恢复最后一次差异备份并收到以下错误消息:

由于 LSN 链中断,无法创建恢复计划。

在此处输入图片说明

请指教。我究竟做错了什么?

sql-server backup restore sql-server-2012

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

索引分配图

我是一名正在阅读“查询 Microsoft SQL Server 2012”一书的开发人员。我遇到了下图:

在此处输入图片说明

  1. 为什么图表前两行中的页面(第 1 行开始:1:174和第 2 行开始:)1:41不是范围的一部分?文档说:“所有页面都存储在范围内”:

  2. 数字方案是如何工作的,例如是什么1:174意思?

  3. 在图的正上方,这本书说:“一个对象的 IAM 页面被组织成一个双向链表;” 该图未显示页面之间的任何链接。

index sql-server sql-server-2012

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

sql server 作业步骤的输出考虑什么?

简而言之:似乎我只收到了 SQL Server 作业历史记录的 PRINT 消息。有效历史输出的定义是什么?

背景:只执行一条像这样的语句UPDATE product SET ...不会在作业历史中留下任何痕迹(无论是否选中“在历史中包含步骤输出”)。在查询分析器中运行相同的语句显示“(X 行受影响)”。

通过创建一个变量并在更新后为它分配@@ROWCOUNT 内容,我可以构建和打印一条包含受影响行数的消息。这将包含在工作历史中。这工作正常,但我想知道Transact-SQL 脚本作业步骤的输出定义(写入历史记录)。除了 PRINTed 字符串之外还包括什么?

人们可能很容易认为历史记录会与 SQL Server Management Studio 的“查询”窗口(以前称为“查询分析器”)的“消息”窗格中显示的完全相同——但事实并非如此。

sql-server sql-server-2012 sql-server-agent jobs

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