我们在 sql server 2008 R2 2 节点主动/主动集群上为大量发布运行事务复制。我注意到快照代理作业每小时运行一次,看起来它刷新了发布(字面意思是新快照?)。在此期间,我们遇到了阻止程序作为这项工作的锁定问题。如果没有添加或更改新文章,是否应该经常刷新?
sql-server sql-server-2008-r2 snapshot transactional-replication
我的公司有一对 SQL Server 2005 实例的故障转移对,它们为 UL 许可的警报/呼叫中心提供数据库可用性,其中正常运行时间和可用性对生命安全至关重要。
下面是来自其中一个关键业务应用程序的 connectionStrings 的示例行(为了我们的保护而进行了消毒):
<add name="MyCompany.MyApp.Properties.Settings.MyDbConnectionString"
connectionString="Data Source=Principal-DB;Failover Partner=Mirror-DB;
Initial Catalog=MyDb; Integrated Security=True; Persist Security Info=True;"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
大约半小时前,这是我们认为的场景:
我们的理论是,因为主要-DB不在状态,以响应连接请求在所有的,当它通常会迅速地拒绝这样的连接,如果它是在恢复状态,客户端应用程序结束了等待整个分配连接超时(默认为 20 秒)让主服务器响应,然后返回超时错误,而无需尝试连接到列出的故障转移伙伴。
快速修复是将更新推送到包含交换数据源和故障转移伙伴实例的 App.config 的客户端应用程序,因此 Mirror-DB 现在是应用程序首先尝试连接的服务器。当我们故障恢复到 Principal-DB 时,我们将不得不使用另一个应用程序更新来撤消此更改。
我需要一个更永久的修复。这不是故障转移对的预期行为,并且不允许再次发生。必须有一种方法来配置客户端应用程序,以便它在返回错误之前在这种情况下正确尝试连接到故障转移伙伴。
我想建立一个大型数据库(200GB)的事务复制。但是当我创建发布者并启动快照代理时,它需要很长时间并且坚持以下消息
进程正在运行,正在等待服务器的响应

但问题是当我看到快照文件夹的大小时,我可以看到它正在增长!但是太慢了。

你对此有什么想法吗?或任何不同的复制方式?如何找到更详细的警告或错误消息?
PS 在我的数据库中有两个图像表,它们占我数据库大小的 98%。当我不将它们包含在我的出版物中时,一切都很好。但是当我包含它们时,我将面临这个问题。
在 SQL Server 2014 中,内存中 OLTP,如果事务回滚并且不再需要新创建的行版本,会发生什么。垃圾收集器是否有责任删除此类行,或者在事务回滚时会在运行时收集此类垃圾?
在我的应用程序中,我们的更新很少。大多数数据被删除和插入。
我的问题是,这将如何影响性能?
我们使用的是 SQL Server 2012。
请发表您的经验。
提前致谢!!
当我在 SQL Server 登录中发现这个“NT AUTHORITY\ANONYMOUS LOGON”帐户时,我的蜘蛛感觉很刺痛。我试图研究这个问题,我什至有一本关于 SQL Server 管理的书。此外,我所做的所有网络搜索似乎都只与登录问题有关。该帐户不在我拥有的本地 SQL express 安装上,所以我真的不知道是否有人在那里添加了它,如果是,为什么。
无论如何,我对此的看法如下:此帐户似乎允许我域中的每个人登录。这似乎是错误的,我想关闭它。我担心的是,如果我关闭此帐户,应用程序是否会开始无法登录?在这方面,用户/密码登录是否被视为“匿名”?换句话说,除了 AD 帐户之外,是否需要此登录才能正常工作?
我希望我可以测试它,但它可能会在生产环境中造成一些损害。
我有两个 SQL 表:用户和客户。
users 表中的每一行在clients 表中都有一组clients,由users 表id字段和clients 表user_id字段链接。
用户表有一个username唯一的字段。
客户表有一个user_id字段 ANDclientname字段,它们一起是唯一的(即clientnames可以存在多次,但必须有不同的user_ids)
我的问题是:如何添加强制username用户表中的clientname字段和客户表中的字段之间的唯一性的规则?甚至有可能吗?
即 nousername可以与 a 相同clientname,noclientname可以与 a 相同username。
这是我用来将链接服务器注册到 SSAS 的代码:
USE [master];
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'ServerAlias',
@srvproduct = N'',
@provider= N'MSOLAP',
@datasrc= N'ActualServerName',
@catalog = N'DatabaseName';
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 运行 MDX 查询时OPENQUERY,或者如果我在运行上述代码后在 Management Studio 中使用测试连接命令,我会收到错误消息:
消息 7403,级别 16,状态 1,第 1 行
OLE DB 提供程序“MSOLAP”尚未注册。
这很奇怪,因为此提供程序是作为 SQL Server 的一部分安装的。
我已经使用 WPF 和实体框架代码优先开发了一个桌面应用程序。
在我的应用程序中,用户可以在运行时创建多个数据库。
但是如果用户在他的机器上不是管理员,则实体框架无法创建数据库。
我需要找到一个可以通过编码完成的解决方案。Management Studio 未安装在用户的计算机上。
你有什么建议?
我正在检查一个带有“显示估计执行计划”的脚本,它为添加到数据库的索引提出了一些建议。我添加了它们,脚本确实运行得更快了。现在我正在考虑将这些放入我们的标准表单中以包含在我们的常规升级脚本中,我注意到可能存在冗余:
CREATE NONCLUSTERED INDEX [TableA_ColA]
ON [dbo].[TableA] ([ColA])
INCLUDE ([ColB])
GO
CREATE NONCLUSTERED INDEX [TableA_ColB_ColA]
ON [dbo].[TableA] ([ColB],[ColA])
GO
Run Code Online (Sandbox Code Playgroud)
我可以从文档中看到,就空间使用而言,两个索引之间存在一些差异,但在这种情况下ColAisint和ColBis nvarchar(255),远远低于 900 字节的限制,所以我不确定INCLUDE第一个索引中的是必要的。
那么这只是执行计划分析器的任意结果吗?在我看来,如果我有第二个索引,第一个索引是多余的吗?
sql-server ×9
failover ×1
index ×1
index-tuning ×1
innodb ×1
mirroring ×1
mysql ×1
performance ×1
replication ×1
security ×1
snapshot ×1
t-sql ×1