我希望我的数据库具有一定程度的容错/冗余。我知道,如果升级到更昂贵的Server版本,我可以内置“复制”。但我想知道是否有人有管理客户端复制的经验。从我的申请来看:
每当我需要从数据库中创建、更新或删除记录时,每次需要读取时,都可以从客户端直接向所有n台服务器发出语句(在这里,其他方案似乎也是可能的)。似乎可以直接添加到我的Linq- to -SQL数据上下文中。
有什么想法吗?
Java 中,原生 JDBC 执行 TDSQL 批量更新的时候,proxy 报错,报错内容理解为:in a non XA transaction,this sql use a different set。
官网 TDSQL 文档中,我看到 update 语句允许跨 set 更新的,update 语句 where 条件加上了 shardkey 的条件了。
求问,有人知道该如何操作嘛?
我需要从MS SQL服务器通过ODBC向Oracle服务器提交一系列查询,并将结果作为表存储在MS SQL服务器上。
它必须是直通,因为查询需要在Oracle服务器上定义的服务器端函数。我不能将表保存在Oracle服务器上,然后通过ODBC访问它,因为Oracle上运行的数据库的供应商有许可限制。
下面是返回正确结果的代码,但我不知道如何保存它们:
DECLARE @BibID AS bigint
DECLARE BibList CURSOR FOR
SELECT BIB_ID FROM tblActiveSerialsThatHave740s
OPEN BibList
FET
有人能告诉我如何在PostgreSQL上执行分布式事务吗?
我需要启动从节点x到节点y的事务(这个节点有一个数据库)。但是我在网上找不到我该怎么做的信息。
我所能做的就是一个分布式查询:
select dblink_connect
('conn','dbname=ConsultaRemota host=192.168.3.9
user=remoto password=12345 port=5432');
select * from dblink('conn','select * from tablaremota') as
t
我有一个SQL Server 2008 RDS实例,我在本地计算机SQL server 2014上创建了一个链接服务器(AWSMSSQL)。
现在,我从本地计算机数据库表中创建了insert、update和delete触发器
USE [test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[ms_test] ON [dbo].[localservertable]
FOR INSERT, UPDATE, DELETE
AS
BEGIN
declare @iddata int;
在我们的本地服务器上从未见过这种情况,但在将MVC4应用程序和SQL Server数据库部署到Azure后,我们有时会收到以下异常,如何解决此问题?
[ArgumentException: Value does not fall within the expected range.]
System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean& nodeNam
我尝试在循环中使用事务作用域。整个循环使用到数据库的单个连接进行。我使用entity Framework4进行数据库访问。在循环的第二次迭代期间,当LINQ to Entites查询执行时,将引发异常,声明服务器上的MSDTC不可用。
我读到过显式地打开连接然后征募事务应该可以解决这个问题,但事实并非如此。下面的示例代码反映了正在发生的基本操作。
对如何防止升级到MSDTC有什么建议吗?
Using context = New MyEntities()
Dim connection = context.Connection
connection.Open()
For
实际上,我正试图分析和解决一些经常发生的死锁,这些死锁至少包括一个名为"DTCXact“的事务,这让我不禁要问。
我重复地对生产服务器运行以下查询:
SELECT DTAT.transaction_id ,
DTAT.[name] ,
DTAT.transaction_begin_time ,
CASE DTAT.transaction_type
WHEN 1 THEN 'Read/write'
WHEN 2 THEN 'Read-only'
WHEN 3 THEN 'System
我正在进行一个项目,在这个项目中,我有多个存储库,可以从不同的表中获取数据。我的所有存储库都是独立的,它们创建新的dataContext,将行添加到表中,并应用提交更改命令。现在,如果在我的服务中,有一种情况,我必须将数据插入多个表,但它应该发生在一个事务中。我可以使用TrnasctionScope实现这一点,但这需要相同的dataContext。由于我使用StrucutreMap创建对象,因此无法获得相同的数据上下文,因此事务失败。
我的对象是这样的。
interface IConnection
{
MyDataContext GetContext();
}
public class C
这可能是与DBA相关的,也可能与开发人员有关,老实说,我不知道。
我有两个数据库服务器:
A: SQL Server 2005 (Trigger that uses DBMail on Server B)
B: SQL Server 2008 R2 (DBMail configured)
我在服务器A中有一个表,其中电子邮件通知排队,我创建了一个“后插入”触发器来使用服务器B执行sp_send_dbmail,如下所示。
USE SampleDB
ALTER TRIGGER [dbo].[mail_inserted]
ON [dbo].[tblEmailQueue]
AFTER I
正如我所发现的,您可以在以下事务中对所需的表设置一个锁:
begin tran
select 1 from myTable
with (tablock /*or tablockx to block even reads from table*/, holdlock)
-- do your work
commit tran
但是,当我在链接服务器表上运行此代码时,该表仍然可以从链接服务器内部访问!为什么?如何像我的例子一样在这个远程表上设置一个锁?
在我的应用程序中,我使用以下模式调用DB:
//do a transaction
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required))
{
OperationOnDb1();
//when we open the connection to the “other db” in this call, the transaction would become distributed
OperationOnDb2();
//
我有相同的本地和远程数据库结构,并且我使用链接服务器连接到远程数据库。我的本地数据库是SQL2000,远程数据库是SQL2008我的本地表:
tbl_name
Id Name flag
1 Raymond 1
2 Sara 1
3 Souzan 2
我的远程表
tbl_name
Id Name
现在我想用falg field value=1将每条记录插入到远程表中,然后在本地数据库中删除插入的记录。
create proc TransferInsertedRec
我想在Server1.DB1中执行一个存储过程,这个存储过程将在另一个使用动态SQL的存储过程中执行,它将在Server1.DB2中执行。
我需要使用begin/end transaction来确保所有东西都执行了,否则所有东西都失败了。
问题是:在这种情况下,使用指向不同数据库的动态SQL,事务可以工作吗?
喜欢
BEGIN TRANSACT
--Set Status to "In Progress"
SET @Qry = N'EXEC '+ @DB2 + '.[dbo].[StatusUpdate] @Id, @Status
我使用的源代码如下:
Database db1 = new Database(); //init 1 db connection
db1.BeginTransaction();
//this function used to check exist customer
//in this function, I also use Database db2 = new Database(); db2.Close();
CheckExistCustomer();
InsertCustomer(db1, strInsert); //this function worked correct, use