我有一个结构,设置了对服务器上的WCF服务的多个服务调用。我每个调用都实例化了多个DbContexts。我希望将这些调用中的一些分组到服务器上的单个事务中,同时排除可能在同一时间发生的其他调用。这个是可能的吗?
我的上下文都是在单个服务器上的单个应用程序中管理的,并且所有上下文都使用相同的连接字符串。
我在找像这样的东西
var transKey = transService.BeginTransaction(); // creates a transaction of some kind.
service1.Execute(transKey); // on the server places
我需要从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
我在MSSQL中有一个链接的Oracle服务器,我正在尝试将查询结果返回到临时表中。查询超过8,000个字符,所以我不能使用我通常使用的OPENQUERY()。我可以运行下面的代码,并看到结果,因为RPC是启用的。
/*
Declare query variable, since query is more than 8,000 characters
*/
DECLARE @myQuery VARCHAR(MAX)
/*
Set query
*/
SET @myQuery = 'Query text here'
EXECUTE (@myQuery) AT ServerNam
我在本地数据库中的SQL表上有一个非常简单的触发器。触发器看起来像这样:
ALTER TRIGGER [dbo].[trg_UpdateAzureDB]
ON [dbo].[my_local_table]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trig
这可能是与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
一家公司拥有一个MicrosoftSQLServer2017企业集群(RTM,64位,14.0.2027.2,KB4505224),由一个可用性组(AG)组成,其中包含两个服务器,一个主服务器和一个辅助服务器。
该公司使用的封闭源代码应用程序似乎可以正常工作,但有一项功能除外。当使用此功能时,可以在其日志文件中找到以下错误:
Cannot use SAVE TRANSACTION within a distributed transaction
根据一个不相关的网站,一种可能的解决办法是通过以下方式禁用分布式事务:
ALTER AVAILABILITY GROUP MyaAG
SET (
我有一个要通过链接服务器执行的查询。该查询如下所示:
USE db1;
SET xact_abort ON;
DECLARE @statement NVARCHAR(max);
SET @statement = 'EXECUTE (''INSERT INTO T1(V1, V2) VALUES (1, 2)'') AT LS1';
BEGIN try
BEGIN TRANSACTION
EXEC Sp_executesql @statement
COMMIT TRANSACTION
END try
BEGIN
我想从本地mssql 2005服务器向远程mssql 2005服务器插入触发器中的数据。
我有一个表Syr;我创建一个触发器(在插入后)来检测是否添加了什么。我想将这些数据复制到另一个远程服务器的同一个表中。我的问题是,如果我只在普通查询中执行insert语句(非常简单,只使用静态数据进行测试),它就成功了;我甚至可以从远程服务器中进行选择。但是当我将这个简单的插入插入到触发器块中时:“无法开始分布式事务”。
CREATE TRIGGER T_SyrInserted
ON [DBProba].[dbo].[Syr]
AFTER INSERT
AS BEGIN
INSERT INTO [Rem
我尝试在循环中使用事务作用域。整个循环使用到数据库的单个连接进行。我使用entity Framework4进行数据库访问。在循环的第二次迭代期间,当LINQ to Entites查询执行时,将引发异常,声明服务器上的MSDTC不可用。
我读到过显式地打开连接然后征募事务应该可以解决这个问题,但事实并非如此。下面的示例代码反映了正在发生的基本操作。
对如何防止升级到MSDTC有什么建议吗?
Using context = New MyEntities()
Dim connection = context.Connection
connection.Open()
For
在具有保存点事务中,我必须与链接服务器中的表进行连接。当我尝试这样做时,我得到了错误消息:
“Cannot use SAVE TRANSACTION within a distributed transaction”
远程表数据很少更改。它几乎是固定的。是否可以告诉SqlServer将此表从事务中排除?我尝试过(NOLOCK)提示,但不能对链接服务器中的表使用此提示。
有人知道一种变通方法吗?我用的是ole SqlServer 2000。
我正在尝试从我的机器( Server 2012)到客户端服务器( server 2008)运行一个分布式事务。
我试着跑:
begin distributed transaction
select * from [172.01.01.01].master.dbo.sysprocesses
Commit Transaction
我得到了:
OLE DB provider "SQLNCLI11" for linked server "172.01.01.01" returned message "No transaction is active.".
这里发生了一些非常奇怪的事情。
我只是在我正在调试的一些遗留代码周围添加了一个事务作用域,以确保我正在进行的摆弄不会被提交。
这起作用了两次,然后说:
"The transaction manager has disabled its support for remote/network transactions."
在工作/非工作状态之间没有任何代码更改或重建(字面意思是连续3个F5s的web应用程序)。这是连接到remove DB服务器的本地代码。
因此,在不同的项目中完全独立的代码会超时。如果我从这段代码中删除transactionScopes,它运行得很好,但是有了它们
我有一个Azure数据库设置作为一个链接服务器,可以查询罚款。我也可以执行存储过程,没有任何问题。
但是,一旦我尝试将存储过程调用的结果插入到表中,就会得到RPC失败:-
[Microsoft][SQL Server Native Client 11.0]
The partner transaction manager has disabled its support for remote/network
transactions.
我已经在链接服务器属性上将RPC设置为true,并将MSDTC作为服务运行。
复制:-
exec [AzureLinkedServerName].myAzure
我有一个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;
我使用的源代码如下:
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
我正在寻找一步一步的步骤,如何建立一个分布式可用组与手动播种。我可以让自动播种工作,但当我尝试手动种子时,我不能将二级数据库进入转发器上的AG。
如果在尝试将数据库添加到常规AG之前将分布式AG添加到辅助服务器,则会得到以下消息:
Msg 41190, Level 16, State 7, Line 22
Availability group 'MYDB' failed to process add-database command. The local availability replica is not in a state that could process the