标签: sql-server

备份后用户权限混乱 - > 恢复操作

我不得不将几个 SQL Server 2008 数据库移动到我们的新 db 服务器,所以我将它们全部备份(到 .bak 文件),将这些文件复制到新盒子并恢复它们(全部使用 SQL Management Studio 完成)。

一切顺利,但现在我发现我无法使用继续在旧 RDBMS 上工作的 SQL Server 帐户登录任何数据库。顺便说一句,我的 Windows 身份验证登录仍然可以正常工作。

我有这个想法,用户和权限都将无缝复制到新的数据库服务器上,但似乎某处出了问题。我将不胜感激评论/建议/提供帮助;-)

sql-server-2008 sql-server backup permissions restore

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

非 DBA 提问:如何通过备份/恢复轻松地将 SQL Server 实例复制/移动到另一台服务器?

我们刚刚有了一台新服务器,所以我需要从旧的 db 框中复制现有的 SQL Server 2008 实例。

我通常通过复制 .mdf 和日志文件并附加它们来做到这一点,但我无法将 dbs 离线,因为它们 24/7 使用,所以我备份了数据库并在新的数据库上恢复它们机器。但是,我最终遇到了一些问题,其中之一与孤儿用户有关。所以我正在寻找的是一个故障安全的过程,以最小的大惊小怪/麻烦/头痛来移动一切。我是一名 .Net 开发人员,拥有相当多的 SQL,但 SQL Server 的内部工作原理对我来说在很大程度上是个谜,我发现 MS 文档很难浏览。

请帮忙。

sql-server-2008 sql-server backup migration restore

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

如何监控死锁

您什么时候开始对 SQL Server 2005/2008 死锁进行故障排除以及如何进行?警报通过 SQL Server 性能条件警报打开 SSMS,对象->SQLServer:Locks,Counter->Lock Waits/Sec,Instance:_Total,警报如果 counter: 上升到值 3 以上。这是一种主动监控它的方式吗?可接受的值是多少?我非常感谢你的帮助。谢谢!!!

sql-server deadlock

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

在 SQL Server 中监视长时间运行的查询的最佳方法是什么?

我必须为我的数据库运行相当多的长时间运行的查询(重建索引、更新大量数据)。是否有替代方法可以在 SQL Server Management Studio 中运行查询并每隔一小时左右检查一次?我想在完成后通过电子邮件或发送消息,但不知道最好的工具。

sql-server-2008 sql-server

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

是否有工具可以在两个不同的模式之间执行数据比较?

我们正在将我们的数据库迁移到新模式,但想要验证数据是否已正确移动。

如果模式相同,传统的数据比较工具可以比较两个数据库的差异。在我们的例子中,表设计发生了变化,但旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此手动检查不是一种选择。

是否有任何工具可以帮助进行此类比较?

如果没有,是否有任何库/框架可以帮助启动自定义解决方案的开发?

如有必要,我很乐意使用特定于数据库的解决方案,在这种情况下用于 SQL Server 2008。

我的解决方案:我通过VIEW在旧数据库上创建一个与新数据库表具有相同字段的每个表来比较两个数据集。

然后,我使用此处描述的技术比较数据:在 SQL Server 中比较两个表的最短、最快和最简单的方法:UNION!

我在这次迁移中很幸运,因为整体表结构类似于旧数据库,字段从一个表移动到另一个表,删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我会在视图中进行计算以提供正确的信息进行比较。

该UNION比较显示我只能用不同的行,所以只要数据是正确的,我得到一个空的结果集。

sql-server-2008 tools sql-server

11
推荐指数
3
解决办法
8368
查看次数

SQL Server 命令行用法?是否可以?

我一直在尝试使用 SQL Server Management Studio 2008 内置的“解决方案资源管理器”来管理一个项目,经过 2 周的努力,我决定我并不真正关心它。它的“方便”功能实际上是一个很大的障碍。

不幸的是,我工作的地方是一家 MS 商店,并且非常受阻。我想回到命令行(我渴望 Vim!)。我已经安装了一个带有 TortiseSVN 前端的本地 subversion 存储库,以替换上面提到的“解决方案资源管理器”并使其运行良好。我还安装了 Vim,在继续定制它的同时,让它嗡嗡作响。

但是,我还没有找到解决方案的一件事是如何通过命令行向 SQL Server 运行命令。我习惯于 MySQL/Postgres 命令行提示,因为这是我过去使用过的并且在我的课程中使用的。但是,我似乎找不到通过 Windows 中的命令行执行脚本的方法。我目前在 Vim 中编辑它们,在 SSMS 中刷新页面,然后执行。除非需要,否则我什至不想触摸 SMSS。

我看过建议使用 sqlsharp 的帖子,但是当我转到该页面时,我觉得这不是我想要的。

- 编辑

我真的希望可以有 2 个答案复选标记。P. Campbell 有技术上的正确答案,我已经尝试了几次(当我尝试 sqlcmd 时我一直收到错误...在研究命名管道的运行方式时...即使我已经设置了它并启用,它似乎不起作用。)

在尝试并没有任何成功之后,我尝试了复制并粘贴到管理工作室的方法,但这太荒谬了......所以我决定也许 HardCode 也是正确的。

sql-server-2008 sql-server windows

11
推荐指数
3
解决办法
4034
查看次数

为什么 .bak 比它作为备份的数据库小这么多?

我刚刚备份了一个 SQL Server 数据库。MDF 和 LDF 文件总共大约 29 GB,但 .bak 文件只有 23 GB,小了大约 20%。

当一组数据的一个版本小于包含相同数据的另一个版本时,我的第一个猜测是数据压缩,但压缩通常会产生比 20% 更好的压缩率,特别是对于高度有序的数据(例如数据库表。 ) 此外,压缩数据不容易进一步压缩,但我知道 .bak 文件可以压缩。

因此,如果数据没有被压缩,并且没有任何东西被丢弃,(因为进行备份的重点是能够在之后将其恢复到相同的状态),那么下落不明的 20% 是多少?

sql-server backup

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

更频繁地备份 SQL DB

我目前有一个计划任务,它在每晚凌晨 2 点触发,调用 SQLCMD.exe 并将其传递给 .sql 脚本以运行备份(如下所示)。我们是一家非常小的公司,由于业务方面的重大增长,需求不断增长。此时丢失 1 天的数据将花费数万美元,而去年此时则为几百美元。在我可以将这个数据库平台迁移到一个不同的解决方案,其中数据镜像发生在 SQL Azure 等主要冗余的情况下,我能做的最好的事情是获得更频繁的备份吗?下面的这个脚本是否强制数据库脱机?我可以在用户与数据库交互的情况下运行此脚本吗?

USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
   WITH FORMAT,
      MEDIANAME = 'CompanyCRM_Backup',
      NAME = 'Full Backup of CompanyCRM';
GO
Run Code Online (Sandbox Code Playgroud)

更新

哇,显然这里有一个比 SO 更专注的 DBA 社区。感谢您到目前为止的反馈。唯一缺少的是“如何”。我已经展示了上面我用来做每日备份的 SQL 命令,但增量日志备份示例是 MIA。这不是一个大型数据库,它目前在 SQLExpress 上运行。当我说 HA 或 SQL Azure 时,我特别指的是我们作为小型企业没有的现有架构。此实例目前正在我们唯一的服务器上运行。如果该服务器崩溃,我们的恢复时间将成为一个症结所在。这就是 SQL Azure 变得有吸引力的原因。

sql-server backup

11
推荐指数
3
解决办法
544
查看次数

SQL Server 2008/R2 恢复模型

我们在某些服务器上的几乎所有数据库都不需要完全恢复模型(我们不进行事务日志备份),并且默认设置应该始终是创建数据库并指定简单恢复模型。

很多时候,出于某些实际原因,许多数据库是使用 SSMS 创建的。然而,可能会犯错误,操作员可能会忘记指定简单恢复模型。几天后,当由于三四个 60GB 的日志文件从未被截断而使盒子在磁盘空间上挣扎时,这会导致“意外”。

通过在model数据库上配置恢复模型,我可以使简单恢复模型成为新数据库的默认设置。但是,这是推荐的,如果我这样做,它会在将来以任何方式回来咬我吗?

sql-server-2008 sql-server sql-server-2008-r2

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

包含列与过滤索引

我们目前使用名为tb_tranfers 的表。该表有 4000 万行,大小约为 26 GB(11 GB 数据,15 GB 索引)。

10% 到 15% 的行是软删除的行(DeletedDate不为空)。该应用程序仅使用DeletedDate为 null 的行。对该表的所有查询都将包含一个具有该效果的子句。

该表有 15 个索引。缺失的索引 DMV 包含使用DeletedDate作为包含列创建索引的建议。

WHERE DeleteDdate IS NULL在所有 11 个非聚集索引上使用过滤索引会有帮助吗?还是将DeletedDate列作为包含列会更好?

index sql-server filtered-index

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