MSDN 文档很难理解。
是否有任何可用于学习 SQL Profiler 的在线教程?如果可能,视频或简单的博客文章将是首选。
对于我们即将托管的应用程序,我需要在 SQL Server 2008 Web 版和 SQL Server 2008 企业版之间进行选择。没有任何“必备”功能:应用程序当前在 SQL Express 上运行,但它会超过 SQL Express 强加的 10GB 最大大小。
我正在查看此比较图表,以及本页“可扩展性和性能”中最重要的表格。随着表变大,诸如“表和索引分区”之类的功能对于保证性能速度至关重要。但是,这需要多大的桌子尺寸?
我应该使用什么策略来确定我的数据库的大小和使用情况是否需要企业版可扩展性和性能功能?
我有一个领域,人们历史上可以用来自由提供价值。我需要识别没有适当值的记录,以便我可以清理它们。
为此,我一直在 SSIS 中四处寻找。我的倾向是在某些 C# 代码中使用带有正则表达式的脚本组件,然后进行重定向。不过,我想知道 SSIS 中是否有一种方法可以在不求助于 C# 的情况下做到这一点。
我没有太多运气找到一种方法来找出有多少记录没有合适的电话号码。
我知道我可以执行 aDBCC CHECKDB并获取我的数据库的状态。
问题
谁能告诉我在哪里可以找到这些页面 ID?
我不得不将几个 SQL Server 2008 数据库移动到我们的新 db 服务器,所以我将它们全部备份(到 .bak 文件),将这些文件复制到新盒子并恢复它们(全部使用 SQL Management Studio 完成)。
一切顺利,但现在我发现我无法使用继续在旧 RDBMS 上工作的 SQL Server 帐户登录任何数据库。顺便说一句,我的 Windows 身份验证登录仍然可以正常工作。
我有这个想法,用户和权限都将无缝复制到新的数据库服务器上,但似乎某处出了问题。我将不胜感激评论/建议/提供帮助;-)
我需要镜像一些数据库并在它们上使用透明数据加密(TDE),因为我们的数据必须在“静止”时加密。
我在主体和镜像上都设置了 TDE。我在设置两个数据库的镜像时遇到的问题。由于我使用的是 TDE,我不知道通过 gui 设置镜像的方法,所以我不得不使用 t-sql 来完成工作。
下面是我在镜像服务器上使用的代码
--Restore the full backup to the mirrored mdf and ldf
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
RESTORE DATABASE TDE
FROM disk = '\\SERVERNAME\SQL_Stuff\Backup\TDE_FULL.bak'
WITH NORECOVERY,
REPLACE,
MOVE 'TDE' TO 'E:\TDE.mdf',
REPLACE,
MOVE 'TDE_log' TO 'G:\TDE.ldf'
CLOSE MASTER KEY
GO
--Restore the log backup to the mirrored db
OPEN MASTER KEY DECRYPTION BY PASSWORD = '1Password'
RESTORE LOG TDE
FROM DISK = '\\SERVERNAME\SQL_Stuff\Backup\TDE_LOG.trn'
WITH NORECOVERY;
CLOSE MASTER KEY …Run Code Online (Sandbox Code Playgroud) 我必须为我的数据库运行相当多的长时间运行的查询(重建索引、更新大量数据)。是否有替代方法可以在 SQL Server Management Studio 中运行查询并每隔一小时左右检查一次?我想在完成后通过电子邮件或发送消息,但不知道最好的工具。
我必须使用索引视图来达到性能。正如我从这个比较表中看到的,标准版不支持索引视图。但是 BOL 说:
可以在任何版本的 SQL Server 中创建索引视图。在 SQL Server Enterprise 中,查询优化器会自动考虑索引视图。要在所有其他版本中使用索引视图,必须使用 NOEXPAND 表提示。
那么它会起作用吗(我说的是性能)
select * from dbo.OrderTotals with (noexpand, index=IXCU_OrderTotals)
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 标准版上以及它的工作原理
select * from dbo.OrderTotals
Run Code Online (Sandbox Code Playgroud)
在企业版上?
这是查看代码:
CREATE VIEW dbo.OrderTotals
WITH SCHEMABINDING
AS
select
OrderId = r.OrderId
, TotalQty = SUM(r.Quantity)
, TotalGrossConsid = SUM(r.Price * r.Quantity)
, XCount = COUNT_BIG(*)
from dbo.Order r
group by r.OrderId
CREATE UNIQUE CLUSTERED INDEX IXCU_OrderTotals ON OrderTotals (OrderId)
Run Code Online (Sandbox Code Playgroud) 我们正在将我们的数据库迁移到新模式,但想要验证数据是否已正确移动。
如果模式相同,传统的数据比较工具可以比较两个数据库的差异。在我们的例子中,表设计发生了变化,但旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此手动检查不是一种选择。
是否有任何工具可以帮助进行此类比较?
如果没有,是否有任何库/框架可以帮助启动自定义解决方案的开发?
如有必要,我很乐意使用特定于数据库的解决方案,在这种情况下用于 SQL Server 2008。
我的解决方案:我通过VIEW在旧数据库上创建一个与新数据库表具有相同字段的每个表来比较两个数据集。
然后,我使用此处描述的技术比较数据:在 SQL Server 中比较两个表的最短、最快和最简单的方法:UNION!
我在这次迁移中很幸运,因为整体表结构类似于旧数据库,字段从一个表移动到另一个表,删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我会在视图中进行计算以提供正确的信息进行比较。
该UNION比较显示我只能用不同的行,所以只要数据是正确的,我得到一个空的结果集。
我有一个这样的查询:
SELECT col1
FROM MyTable
WHERE
DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
BETWEEN col2
AND col3
;
Run Code Online (Sandbox Code Playgroud)
这给出了与此类似的执行计划的工具提示:

dateadd搜索谓词的一部分是否对查询中的每一行执行?或者 SQL Server 是否为整个查询计算一次值?
sql-server-2008 ×10
sql-server ×6
backup ×1
corruption ×1
learning ×1
mirroring ×1
optimization ×1
performance ×1
permissions ×1
profiler ×1
query ×1
restore ×1
tools ×1
view ×1