寻找一个安全的 TSQL(首选)或安全的步骤(如果可能的话,最好是自动化的)来一次性更改数十个表的排序规则。
背景:
我们有一个数据库,SQL Server 2005,有大约 100 个表。
其中 30-40 个有一个不适合我们正在运行的应用程序的排序规则集。(我们需要它们都是“SQL_Latin1_General_CP1_CS_AS”但是这组表是“SQL_Latin1_General_CP1_CI_AS”)
可能的解决方案:
我们找到了这个脚本:http : //www.codeproject.com/Articles/12753/SQL-Server-2000-Collation-Changer
找到解决方案的问题:
但是这个脚本似乎引入了数据丢失的可能性,并且它似乎既不检测也不警告也不衡量是否会发生数据丢失。
使用感觉有风险!
社区问题:
有没有更先进的方法来解决这个问题?
最好是一个脚本:
谢谢!
我知道目标数据库处于“恢复”状态是正常的
我还想做一些查询,以检查数据是否都是最新的。
我是否可以将它暂时置于只读、非恢复状态以检查数据,然后将其恢复到恢复状态,而不会破坏整个恢复链?
谢谢!
Windows 2016 上的 SQL Server 2016 标准版
我们有一个 8 核、128GB 的机器(实际上是一个 VM)。我们为我们的产品数据库最大化这个。(实例122GB,实例8核)
我们正在设置第二个 db,位于其自己的主轴组(较慢的磁盘)上,并且不希望它影响 prod db。这将在同一个 VM 上(根据我们的理解,我们可以通过这种方式使用现有的 SQL 许可证)。
这个第二个数据库必须由它自己的 SQL 实例提供服务,以便:
或者我们可以在主实例中限制这个数据库吗?
(注意,Express Edition 不是一个选项,我们的数据库将超过 10 GB)
使用 SQL Server 2008。
我已经使用 SQL 日志传送多年了。效果很好。
使用新的备用服务器(日志传送的接收者),我看到日志还原性能非常差,我想知道:在 MDF 和 LDF 中,在日志还原期间,一个命中率是否比另一个特别高?
背景:使用专用硬件,我对这方面没有问题。(公平地说,我一直对目标上的 ldf 大小不满意......但是你打算用恢复状态的数据库做什么?)
我现在正在试验云服务器和块存储。到目前为止......我对块存储的 IOPS 相当失望。日志恢复操作真的很慢(我们的主数据库服务器每 4 分钟输出一个日志文件,在目标上恢复每个文件需要 2 分钟以上!)。
所以我在争论是否:
进一步挖掘发现:https : //serverfault.com/questions/261631/temporary-io-boost-for-an-mssql-server
这表明热 IO 将是 LDF ......这将是优化的地方......(尽管“恢复日志”不是该线程的明确议程)。
我们是否同意提高 LDF 磁盘的 IOPS 应该提高 RESTORE LOG 性能?
谢谢!
讨论了如何针对整个数据库衡量活动:https : //stackoverflow.com/questions/5019593/sql-server-2008-transaction-per-second-for-specific-database
我的问题比较狭窄。
我们正在努力优化我们的应用程序的性能。要了解我们的工作情况,我们需要测量特定表上每秒/分钟/小时(首选小时)的 SELECT 操作。(这样我们可以在实施优化之前和之后进行测量,看看我们做得如何。)
有什么方法或工具可以做到这一点?
谢谢!
如果我在 SQL Server 中有一个证书,用于备份:
让这些证书过期有什么意义?(除了让我暴露于由于过期的证书而导致备份失败......)
SQL Server 2008,标准日志传送设置(嗯,使用 redgate,但这是一个非常正常的流程)。
在副本上,日志文件非常大。
想知道在备份/副本服务器上是否可以以某种方式缩小日志?
谢谢!
我们有一些代码可以分页查看 SQL 结果。(目前在 SQL Server 2008 上运行)
我们注意到当分页完成时,一些行没有返回。让我澄清一下:
nHibernate 生成 SQL 查询。我们正在做分页。如果我们按 100 页,nHibernate 生成连续 SQL 查询的方式是:
以上,在 nHibernate 级别没有 ORDER BY / 排序,最终结果是某些行永远不会出现在 nHibernate 中。我们推测这是由于 SQL 的任意排序造成的,因此行在页面内“移动”(从而从我们的应用程序代码中“隐藏”)。
如果我们单次执行 nHibrate 查询(返回所有行),我们会看到所有数据。(下面的这个查询是由 nhibernate 生成的。)
添加 order by 子句(又名 nHibernate 排序)有帮助吗?
SELECT top 33
... <field list>
FROM
salesOrder this_ left outer join [Item] Item2_ on this_.ItemId=Item2_.ItemId
WHERE this_.AccountId = @p0
and this_.ModifiedAt > @p1
and this_.ModifiedAt <= @p2
Run Code Online (Sandbox Code Playgroud) 据我们了解,与 SQL Server 2008 及更高版本相关:
ALTER INDEX ... REORGANIZE
Run Code Online (Sandbox Code Playgroud)
在所有版本的 SQL Server 中进行在线操作。
ALTER INDEX ... REBUILD
Run Code Online (Sandbox Code Playgroud)
是 BLOCKING 操作,除非你有 SQL Server 企业版......(即使是企业版,在重建聚集索引时也会阻塞)
如果以上都正确,问题是:
在ALTER INDEX ... REORGANIZE操作过程中,该表是否可用于读写,或者写入是否被阻塞?
SQL Server 2014 和 2016,都是标准版。
我们正在迁移到新的 SQL Server。我们通常通过日志传送来做到这一点(这让我们有一个小的转换窗口,因为我们只需要恢复最终日志,从恢复中取出新数据库,修改连接字符串,我们就完成了......)
我们希望在此过程中迁移到 SQL 2016。
可以从 2014 年到 2016 年登船吗?
sql-server ×10
log-shipping ×2
backup ×1
certificate ×1
collation ×1
nhibernate ×1
paging ×1
performance ×1