标签: database-mirroring

第二次与pyodbc连接到镜像MS SQL Server的Segfault

我正面临着连接到镜像MS SQL服务器数据库的Python脚本的问题.当我第二次尝试连接数据库时,它会抛出一个分段错误.应用服务器和数据库实例都在Google Compute Engine上运行.

这里有一些代码复制了这个问题:

import pyodbc

params = {
   'autocommit': True,
   'uid': 'myuser',
   'tds_version': '8.0',
   'DRIVER': '{mssql}',
   'pwd': 'mypassword',
   'server': 'sql-server-01',
   'database': 'mydb',
   'port': 1433,
}

c1 = pyodbc.connect(**params)
c2 = pyodbc.connect(**params)
Run Code Online (Sandbox Code Playgroud)

第一个连接(c1)成功,但第二个连接(c2)立即失败并出现segfault."mydb"镜像到第二个服务器(sql-server-02).使用非镜像数据库或禁用此数据库的镜像会使其消失.

我们已经尝试升级几个库,但这并没有解决问题.版本:

  • Microsoft SQL Server:12.00.2000(最新)
  • Python:2.7.6
  • pyodbc:3.0.10(最新)
  • unixODBC:2.2.14p2-5ubuntu5,2.3.0,2.3.4(最新)
  • RedHat的MS ODBC驱动程序:11.0.1790.0,11.0.2270.0(最新)

要在此添加,执行相同步骤的Java代码可以正常工作.

有任何想法吗?

python sql-server pyodbc segmentation-fault database-mirroring

6
推荐指数
1
解决办法
830
查看次数

使用SQL Server镜像和自动故障转移时,为什么不支持MSDTC?

我有一个应用程序,我想支持SQL Server镜像.但是,该体系结构目前是在单个MSDTC事务中登记多个WCF服务和数据库连接,Microsoft声明在使用镜像时不支持MSDTC.

他们的解释并不是非常有用的:

使用数据库镜像与MS DTC事务时,可能会出现类似的情况.例如,新的主体服务器在故障转移后联系MS DTC.但是,MS DTC不了解新的主体服务器.因此,即使事务被视为在其他数据库中提交,MS DTC也会停止处于"准备提交"阶段的任何事务.

我理解问题的是最后一句话.这与DB服务器没有镜像,并且在同一时间点死亡有什么不同?有人可以向我解释一下吗?我需要能够向组织中的其他人(以及客户)解释这一点,但我不明白为什么MSDTC可以在一种情况下正确回滚/补偿,但如果其中一个参与者是镜像SQL服务器则不能(完全安全模式).

sql-server msdtc failover high-availability database-mirroring

5
推荐指数
1
解决办法
2468
查看次数

将参与数据库镜像会话或可用性组的数据库设置为单用户模式

我正在尝试将当前位于可用性组或镜像会话中的数据库设置为单用户模式。但我收到以下错误:

The operation cannot be performed on database "DATABASE_NAME" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.ALTER DATABASE statement failed.
Run Code Online (Sandbox Code Playgroud)

sql sql-server database-mirroring

5
推荐指数
1
解决办法
3425
查看次数

不太了解SQL Server事务日志

我已经阅读了SQL Server事务日志,但对如何使用/管理它们仍然不太满意.我知道它们对事务回滚,镜像,复制和日志传送等很重要.

对我来说,它们看起来仍然像一个黑盒子,我对它们做任何事都不太舒服.是否有工具允许我查看事务日志文件或获取有关它的信息?如果我不需要事务日志传送之类的东西,我可以定期收缩和/或截断我的日志文件吗?特别是在将备份还原到测试实例的情况下 - 我真的需要一个占用空间的数GB日志文件吗?我需要注意哪些其他功能特别依赖于事务日志,如果我缩小/截断日志文件将无法工作?

transaction-log sql-server-2008 database-replication database-mirroring

3
推荐指数
1
解决办法
1022
查看次数