Articles of sql server 2005

为什么Reporting Services在服务帐户更改期间无法导入现有的encryption密钥?

我已经多次更改了SQL Server 2005 Reporting Services的服务帐户,但昨天是第一次遇到令人恐惧的“报表服务器无法解密用于访问…的对称密钥”错误。 该环境是作为默认情况下也具有SQL Server 2000 Standard版本的盒子上的命名实例安装的SQL Server 2005 Enterprise版本。 一切都是32位的。 BOLbuild议我总是使用Reporting Servicesconfigurationpipe理器来进行更改,并且从不必恢复encryption密钥。 但是,这个最近的时间(它将不得不在生产中,不是吗?),服务帐户更改无法导入现有的encryption密钥; 从ReportServerService日志文件: ReportingServicesService!crypto!b!5/19 / 2009-17:20:37 :: i INFO:将crypto初始化为用户:\ ReportingServicesService!crypto!b!5/19 / 2009-17:导出公钥ReportingServicesService!crypto!b!5/19 / 2009-17:20:37 :: i INFO:执行skuvalidationReportingServicesService!crypto!b!5/19 / 2009-17:20:37 :: i INFO:导入现有的encryption密钥ReportingServicesService!library!b!5/19 / 2009-17:20:37 :: e错误:抛出Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerDisabledException:报表服务器无法解密用于访问敏感的对称密钥或在报表服务器数据库中encryption的数据。 您必须还原备份密钥或删除所有encryption的内容。 检查文档以获取更多信息。 信息:Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerDisabledException:报表服务器无法解密用于访问报表服务器数据库中的敏感或encryption数据的对称密钥。 您必须还原备份密钥或删除所有encryption的内容。 检查文档以获取更多信息。 —> System.Runtime.InteropServices.COMException(0x80090005):错误的数据。 (从HRESULTexception:0x80090005)在System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode,IntPtr errorInfo) 在RSManagedCrypto.RSCrypto.ImportSymmetricKey(Byte [] symKeyBlob)在Microsoft.ReportingServices.Library.ConnectionManager.GetEncryptionKey()—内部exception堆栈跟踪结束— 现在,我是一个很好的小DBA,我有一个以前的encryption密钥的备份,所以我能够很快从这个问题中恢复,但是,我想知道的是,为什么会发生? MS的这篇文章暗示可能会发生 […]

对于WebUser,我的SQL Server 2005数据库需要什么权限?

我有一个连接string在我的asp.net代码看SQL Server 2005数据库。 我创build了一个名为WebUser的用户名,并在SQL Server 2005中授予他db_datawriter和db_datareader。在login和数据库下,用户必须能够读取并能够更新? 这是我所需要的还是正确的事情? 连接string将如下所示。 <add name="ConnectionStringName" connectionString="DataSource=localhost; Initial Catalog=DBName;User ID=WebUser; Password=mypassword; Integrated Security=FALSE" providerName="System.Data.SqlClient"/> </connectionStrings>

最佳实践:使用Asp.net和Microsoft SQL 2005在两个物理站点之间实现负载平衡/实现高可用性的最佳方式是什么?

当serverfault处于testing阶段时,我在StackOverflow上询问了这个问题。 给它第二枪。 我在两个物理上分开的位置有4个服务器。 每台服务器都运行Windows Server 2003 Standard和Microsoft SQL Server 2005标准版。 数据中心A中的服务器A1和A2 数据中心B中的服务器B1和B2 这些服务器通过互联网与VPN相互连接。 在两个数据中心之间提供高可用性的最佳方式是什么? 我已经考虑了以下想法。 情景A 数据中心A和B之间的DNS循环 通过VPN镜像服务器A1和B1上的数据库 服务器A2和B2将作为热备份发送给他们作为灾难恢复。 所有的Web服务器都会将数据库通信量通过VPN指向服务器A1,直到发生故障转移,将请求发送到B1 服务器将运行Microsoft Load Balancer软件。 情景B 镜像服务器A1和A2上的数据库 A1和A2将运行Microsoft Load Balancer软件 B1和B2将运行Microsoft Load Balancer软件。 将运送到服务器B1和B2的日志作为热备份,以便在数据中心之间进行手动切换如果数据中心A发生故障,请将DNSlogging更改为指向数据中心B. 我是C#程序员,不是系统devise人员,所以我不知所措。 我正在尝试使用我们的硬件和数据中心configuration。 如有需要,我们可以购买硬件负载平衡器。

如何从SQL Server 2005的用户数据库中的存储过程执行msdb.dbo.sp_start_job

我试图从MyDB.dbo.MyStoredProc执行一个msdb.dbo.sp_start_Job为了执行MyJob 1)我知道,如果我给用户一个SqlAgentUserangular色,他将能够运行他拥有的工作(但这是我观察到的:用户可以开始/停止/重新启动SQL代理,所以我不想去这个路线) – 让我知道如果我错了,但我不明白为什么这样一个低权限的用户能够启动/停止代理。 2)我知道,如果我给予执行权限执行用户到msdb.dbo.Sp_Start_job和启用所有权链接或启用可信用户数据库它会工作(但我不希望在用户数据库启用所有权链接或信任) 3)我这可以通过代码签名来完成 用户数据库 i)创build存储过程MyDB.dbo.MyStoredProc ii)创build一个certificae job_exec iii)用证书job_exec签名MyDB.dbo.MyStoredProc iv)导出证书 msdb i)导入证书ii)从这个证书创build一个派生用户iii)为这个派生用户授予authenticationiv)在msdb.dbo.sp_start_job上向派生用户授予执行权v)在msdb.dbo.sp_start_job上向执行的用户授予执行权MyDB.dbo.MyStoredProc 但我试了一下,它不适合我 – 我不知道我失踪或做错了哪一块 所以请为我提供一个简单的示例(使用脚本),使用代码签名从用户存储的prod MyDB.dbo.MyStoredProc中执行msdb.dbo.sp_start_job 许多许多人提前感谢 谢谢拉姆

SQL 2005安全性 – 用户:它们用于什么? (和其他各种问题)

我不是一个DBA,所以不知道任何有关SQL 2005安全设置等。我试图通过从SQL Management Studio生成的脚本生成完整的数据库来设置我们的数据库的空副本。 不幸的是,我不知道有多less选项可以做,而且这个过程的MSFT文档也不是很好。 可以为Schema,Tables,Views和Users生成脚本。 这是我感到困惑的用户,因为我不明白他们如何影响数据库的使用。 我们在团队中有一些开发人员在这个列表中,有些不是,但是每个人都可以在数据库上做任何事情,至less当他们在自己的机器上托pipe时。 我是否需要将这些用户保留在新生成的数据库中?他们做了什么? 我们也有一个dbo用户,他是db_owner,拥有我们的许多模式。 这个dbo用户是什么? 用户拥有模式的意义是什么? 我们使用Schema作为“名称空间”来对我们的数据库中逻辑相关的表进行分组,但是我认为它们比这个更重要吗? 还有一个用户名绑定到这个dbo用户,它是我们的开发人员的Windows NTlogin,但他没有他自己的用户对象在列表中…是否有任何意义呢? 这是坏事吗? 其他用户是guest,INFORMATION_SCHEMA和sys,但我认为这些都是默认值? 对不起,但我是一个SQLpipe理无知,通常把这些东西留在我以前的工作DBA! 谢谢你的帮助。

此强制重新合并复制拓扑?

我需要将一些列添加到作为复制集的一部分的表中。 它不是约束库或任何文章filter的一部分,它允许NULL。 我有一个很好的主意,我可以运行这个 – > ALTER TABLE tblPlanDomain ADD ReportWageES VARCHAR (100) NULL 而不是强迫所有的客户重新初始化,但我希望有一些保证。 任何人都可以validation这种方式或其他对我来说? 谢谢, 编辑:添加信息 这就是我所说的 – > http://msdn.microsoft.com/en-us/library/ms151870.aspx 在这个基础上,似乎我的问题的答案是否定的,但我仍然希望得到人的确认。

什么会导致长时间的查询没有高资源使用率?

提前:抱歉的问题的长度…无法在细节和简洁之间取得适当的平衡。 在我们的Web应用程序中,我们遇到了数据库服务器的问题,应该(通常是)在很短的时间(<10ms)内运行的查询,在随机的场合,需要1到30秒的时间执行 – 没有明显的模式。 根据我们的剖析器的轨迹,其中一些甚至是"exec sp_reset_connection" (通常运行在0ms;观察到的峰值为3〜6s)和"SET NO_BROWSETABLE ON"等"SET NO_BROWSETABLE ON"无所事事”查询。 : SELECT * FROM [Localisation].[TimeZoneRule] WHERE [Name] = 'EU' TimeZoneRule在5列中有大约500,000行。 具有代理主键和Name上的索引。 通常需要0.97ms,在11s达到峰值。 表从未写入(在上线之前预先填充)。 事件探查器logging为0-15 CPU,18-25读,0-1写(不知道为什么写)。 UPDATE [Core].[User] SET [LastUsed] = GETUTCDATE() WHERE Id = '<uid>' User在大约10列(其中之一是Xml列)上有大约30,000行。 Id是集群主键。 表是定期写入和读取。 通常需要10〜20ms,峰值在26s。 Profiler将其logging为0 CPU,15-36次读取,0-1次写入。 INSERT INTO [Log].[Session] (ASPSessionId, Start, ClientAddress, ClientSoftware, ProxyAddress, ProxySoftware) VALUES(<number>, GETUTCDATE(), '<ipv4address>', '<User […]

在SQL 2005中复制/镜像100个数据库的最佳方法

我目前主持大约400-500个不同大小(1-10个演出)的SQL 2005数据库。 我知道大多数不同的方法可用和镜像,日志传送,复制和集群的一般优点/缺点,但我不知道他们倾向于执行时,如果以我规定的大小(400- 500个独特的数据库)。 有没有人有什么好的build议可能是最好的方法有能力故障转移到另一台服务器这种设置? 故障转移不需要立即进行,我只是在寻找比每天进行备份并将其移动到存储器更好的东西。 我最好寻找一些能够轻松pipe理批量数据库(而不是一次一个)的东西。 感谢您的input!

虚拟化和SQL服务器

我工作的系统pipe理员正在重新组织我们的服务器,他们build议我们把主生产SQL数据库放在虚拟服务器上。 这样做的时候有什么需要考虑的吗? 我们是否应该期待业绩下滑? 如果是的话,我们如何防止呢? 我知道这里有很多参数,但一些build议或经验将是有用的。 SQL 2000和2005版本(尽pipe我们可能会将2000作为练习的一部分升级)

通过“在线索引”运行“重build索引”维护计划

我正在使用Windows Server 2003 SP 2和SQL Server 2005企业版 我正在为一个特定的数据库创build一个“重build索引”作业,并且我成功地能够运行这个工作。 但是,当我尝试启用“重build时保持索引在线”选项时,作业无法成功执行并抛出错误。 我附上了截图。 任何帮助将是应用程序 http://img535.imageshack.us/gal.php?g=error1r.png PS:我不能在这里附上图像,因为我还没有10分! 谢谢。