Skip to content
Trang chủ » Identifying Open Transactions In Sql Server: A Comprehensive Guide

Identifying Open Transactions In Sql Server: A Comprehensive Guide

How to find blocking queries in sql server

How To Identify Open Transactions Sql Server

Understanding Open Transactions in SQL Server

In SQL Server, transactions play a vital role in maintaining data integrity and consistency. Transactions enable you to group multiple database operations into a single logical unit, making it easier to manage and ensure data correctness. However, there may be situations where transactions can be left open and not committed or rolled back properly. These open transactions can cause issues such as blocking, resource contention, and even data corruption if left unattended.

Identifying open transactions is crucial for database administrators to maintain a healthy server environment. Fortunately, SQL Server provides several dynamic management views and commands that allow us to easily identify and manage open transactions. In this article, we will explore various methods to identify open transactions in SQL Server.

Querying the sys.dm_tran_active_transactions Dynamic Management View

The sys.dm_tran_active_transactions dynamic management view provides valuable information about currently active transactions in the SQL Server instance. By querying this view, we can obtain details such as transaction ID, database ID, transaction start time, transaction state, type of transaction, and much more.

To identify open transactions, you can execute the following query:

SELECT transaction_id, database_id, start_time, transaction_state
FROM sys.dm_tran_active_transactions
WHERE transaction_state = 1

In the result set, you will see the list of all active transactions that are currently open and not yet committed or rolled back.

Examining the sys.dm_tran_session_transactions Dynamic Management View

The sys.dm_tran_session_transactions dynamic management view provides information about the transactions associated with each active session in the SQL Server instance. By joining this view with sys.dm_tran_active_transactions, we can gain additional insights into open transactions.

Here’s an example query that combines both views to identify open transactions:

SELECT at.transaction_id, at.database_id, at.start_time, at.transaction_state, st.is_user_transaction
FROM sys.dm_tran_active_transactions at
JOIN sys.dm_tran_session_transactions st
ON at.transaction_id = st.transaction_id
WHERE at.transaction_state = 1

This query retrieves details such as transaction ID, database ID, start time, transaction state, and whether the transaction is a user transaction or a system transaction.

Analyzing the sys.dm_exec_requests Dynamic Management View

The sys.dm_exec_requests dynamic management view provides information about the currently executing requests in SQL Server. By examining this view, we can identify active transactions as well as the associated session and transaction IDs.

To find open transactions using this view, execute the following query:

SELECT session_id, transaction_id, start_time
FROM sys.dm_exec_requests
WHERE open_transaction_count > 0

This query retrieves the session ID, transaction ID, and start time of all requests that have open transactions.

Exploring the sys.dm_tran_database_transactions Dynamic Management View

The sys.dm_tran_database_transactions dynamic management view provides information about transactions at the database level. By querying this view, we can get details about open transactions specific to a particular database.

To identify open transactions at the database level, execute the following query:

SELECT database_id, transaction_id, transaction_begin_time
FROM sys.dm_tran_database_transactions
WHERE state = 1

This query retrieves the database ID, transaction ID, and start time of all open transactions within a specific database.

Using SQL Profiler to Capture Open Transactions Information

Apart from the dynamic management views, SQL Server Profiler is another powerful tool that can be used to capture information about open transactions. SQL Profiler allows you to trace and monitor various events and queries executed on the SQL Server instance, including events related to transactions.

To capture open transactions information using SQL Profiler, follow these steps:

1. Launch SQL Profiler from the SQL Server Management Studio.
2. Create a new Trace.
3. In the Events Selection tab, select the “Transactions” category.
4. Choose the desired events such as “Begin Tran”, “Commit Tran”, “Rollback Tran”, and “Abort Tran”.
5. Start the trace and let it run for a specific period.
6. Analyze the captured events to identify open transactions.

Check pending transaction sql server, Kill transaction in SQL Server, Check transaction SQL Server, DBCC OPENTRAN

To further manage open transactions, SQL Server provides various commands and utilities.

To check the pending transaction count in SQL Server, you can execute the following command:

SELECT COUNT(*)
FROM sys.dm_tran_active_transactions

This query will return the number of pending transactions in the SQL Server instance.

To kill a specific transaction in SQL Server, you can use the KILL command followed by the transaction ID. For example:

KILL

This command terminates the specified transaction immediately.

To check the transaction information for a specific database, you can use the DBCC OPENTRAN command followed by the database name. For example:

DBCC OPENTRAN(‘database_name’)

This command displays information about the oldest open transaction and the transaction status.

Frequently Asked Questions (FAQs)

Q: How can I view the transaction log in SQL Server?
A: To view the transaction log in SQL Server, you can use the fn_dblog function. This function allows you to query the transaction log and retrieve information about all the transactions. For example:

SELECT [Current LSN], [Transaction ID], [Operation], [Context], [Transaction Name]
FROM fn_dblog(NULL, NULL)

Q: Can you provide an example of a SQL transaction?
A: Certainly! Here’s a simple example of a SQL transaction:

BEGIN TRANSACTION;

UPDATE table_name
SET column1 = value1
WHERE condition;

INSERT INTO table_name (column1, column2)
VALUES (value1, value2);

COMMIT;

In this example, we begin a transaction, perform an update operation, insert a new row, and finally commit the transaction to make the changes permanent.

Q: How can I ensure data is stored permanently when using database transactions?
A: Data is stored permanently when a transaction is committed. By executing the COMMIT statement at the end of a transaction, all the changes made within that transaction become permanent. If the transaction encounters an error or is rolled back, the changes will not be stored permanently.

In conclusion, identifying and managing open transactions in SQL Server is crucial for maintaining a stable and efficient database environment. By utilizing dynamic management views, commands like DBCC OPENTRAN, and tools like SQL Profiler, you can easily identify open transactions and take appropriate actions such as committing or rolling back the transactions. Regularly monitoring and managing open transactions help ensure data consistency and minimize potential issues.

How To Find Blocking Queries In Sql Server

How To Check Open Session In Sql Server?

How to Check Open Session in SQL Server?

In any database management system, it is crucial to keep an eye on the open sessions to ensure smooth operation and troubleshoot any potential issues. In SQL Server, checking open sessions allows database administrators to monitor the connections and activities performed by users or applications on the database. This article will guide you through the process of checking open sessions in SQL Server and provide you with a comprehensive understanding of this important aspect of database management.

What are Open Sessions in SQL Server?

In SQL Server, when a user or application connects to the database, a session is established. An open session represents an active connection to the SQL Server database where various operations such as executing queries, transactions, or data modifications are performed. Multiple sessions can coexist concurrently in SQL Server, depending on the server’s configurations and limitations.

Methods to Check Open Sessions in SQL Server

There are several methods to check open sessions in SQL Server, ranging from GUI-based tools to T-SQL queries. Let’s explore some of these methods in detail:

1. SQL Server Management Studio (SSMS):
One of the easiest ways to check open sessions is by using SQL Server Management Studio, a graphical user interface (GUI) tool provided by Microsoft. Simply connect to the desired SQL Server instance using SSMS and navigate to the ‘Activity Monitor’ under the ‘Management’ section. Here, you can view various details about open sessions, including session ID, login name, host name, application name, login time, and more.

2. sys.dm_exec_sessions Dynamic Management View:
Another method to check open sessions is by utilizing the sys.dm_exec_sessions dynamic management view. This view provides information about the active sessions on the SQL Server instance. By executing a simple T-SQL query like “SELECT * FROM sys.dm_exec_sessions,” you can retrieve comprehensive details about open sessions, such as session ID, login name, status, program name, host name, and more.

3. sp_who and sp_who2 Stored Procedures:
SQL Server provides two built-in stored procedures, sp_who and sp_who2, which can be executed to get a list of active sessions. By executing “sp_who” or “sp_who2” in a query window, you will get a result set showing various details about the open sessions, including the session ID, login name, host name, status, command, database name, and more.

FAQs

Q: Can I kill a specific session in SQL Server?
A: Yes, you can kill a specific session in SQL Server using the ‘KILL’ command. Ensure that you have the necessary permissions to perform this action as killing a session will terminate all the associated processes and rollback any uncommitted transactions.

Q: How can I identify the blocking sessions using the open session information?
A: To identify blocking sessions, you can utilize the sys.dm_exec_requests dynamic management view. By joining it with sys.dm_exec_sessions, you can retrieve details about the blocking sessions, including session ID, status, wait type, blocking session ID, program name, and more.

Q: Can I check open sessions on a remote SQL Server instance?
A: Yes, you can check open sessions on remote SQL Server instances by establishing a connection using SSMS or by running T-SQL queries remotely using tools like SQL Server Data Tools (SSDT) or PowerShell.

Conclusion

Checking open sessions in SQL Server is a vital task that assists database administrators in monitoring the connections, identifying specific sessions, troubleshooting issues, and managing the database efficiently. By utilizing methods such as SQL Server Management Studio, dynamic management views, and built-in stored procedures, administrators can obtain valuable information about the active sessions. Remember, it is essential to have the necessary permissions and exercise caution when terminating any sessions using the ‘KILL’ command.

How To Check Transaction Log In Sql Server?

How to Check Transaction Log in SQL Server

The transaction log in SQL Server is a crucial component that tracks all the transactions performed on a database. It records every modification made to the database, including inserts, updates, and deletions, providing a detailed history of all the changes made. The transaction log plays a vital role in data recovery, replication, and ensuring database integrity. In this article, we will delve into the intricacies of checking the transaction log in SQL Server, guiding you through various methods and providing a comprehensive understanding of this essential database feature.

Before diving into the methods, it’s important to note that only users with sufficient privileges can access and view the transaction log. The required level of access might differ based on the specific SQL Server version or user role configuration in your organization. Therefore, make sure you have the necessary permissions to execute the steps outlined here.

Method 1: Using SQL Server Management Studio (SSMS)
SQL Server Management Studio (SSMS) is a popular and powerful tool for managing SQL Server databases. To check the transaction log using SSMS, follow these steps:

1. Launch SSMS and connect to the SQL Server instance containing the database you want to analyze.
2. Expand the Databases folder in the Object Explorer pane, and find and select the database you want to inspect.
3. Right-click on the database and select “Tasks,” then choose “View Transaction Log.”

A new tab will open, displaying the transaction log viewer. This viewer provides different views and filters to analyze the transaction log, such as the ability to filter transactions by date, user, or specific operation (insert, update, delete, etc.). You can also export the transaction log information to further analyze it using other tools or for auditing purposes.

Method 2: Using T-SQL Commands
SQL Server provides various system stored procedures and functions that enable you to query and retrieve transaction log information directly from the command line. The primary T-SQL commands used in this method are DBCC LOGINFO and fn_dblog.

– DBCC LOGINFO: This command provides general information about the virtual log files (VLFs) contained within the transaction log. It returns a result set with details about each VLF, including the status, size, and offset.
Syntax: DBCC LOGINFO ([DatabaseName])

– fn_dblog: This function allows a more detailed analysis of the transaction log, providing access to individual log records. By filtering on specific criteria, such as time range, user, or operation, you can retrieve granular information about the activities within the log.
Syntax: SELECT * FROM fn_dblog(NULL, NULL)

You can execute these T-SQL commands in SSMS by opening a new query window and connecting to the appropriate database.

FAQs

Q: Can I truncate the transaction log to free up disk space?
A: Yes, you can truncate the transaction log to manage disk space. However, it is crucial to understand the implications of truncating the log. Truncation removes inactive log entries, effectively freeing up disk space, but also eliminating the possibility of performing a point-in-time recovery past the truncation point. This means you won’t be able to recover the database to a previous state before the truncation occurred. It is recommended to back up the transaction log and regularly perform transaction log backups instead of truncation to ensure data recoverability.

Q: Can I view a previous version of a table using the transaction log?
A: No, the transaction log does not store multiple versions of a table. Only the changes made during a transaction are recorded, allowing you to roll back or forward changes within the transactional context. To view previous versions of a table, you can consider using other SQL Server features like Change Data Capture (CDC) or Temporal Tables.

Q: How can I determine the size of the transaction log?
A: To find the size of the transaction log, you can execute the following T-SQL command:
Syntax:
EXEC sp_spaceused N’YourDatabaseName’.log

This command will provide information on the transaction log size, space usage, and the percentage of space used.

In conclusion, checking the transaction log in SQL Server is essential for understanding the history of modifications and ensuring database integrity. By utilizing SSMS or T-SQL commands such as DBCC LOGINFO and fn_dblog, you can gain valuable insights into the transaction log contents and manage it effectively. It is crucial to have appropriate permissions and to exercise caution when truncating or modifying the transaction log to avoid data loss or integrity issues.

Keywords searched by users: how to identify open transactions sql server Check pending transaction sql server, Kill transaction in SQL Server, Check transaction SQL Server, DBCC OPENTRAN, Active transaction in SQL Server, View transaction log SQL Server, SQL transaction example, How to make data stored permanently when use database transaction

Categories: Top 16 How To Identify Open Transactions Sql Server

See more here: nhanvietluanvan.com

Check Pending Transaction Sql Server

Check Pending Transaction in SQL Server

When working with a complex database system, it’s crucial to have a mechanism in place to monitor and manage pending transactions effectively. In SQL Server, pending transactions can impact database performance and lead to inconsistencies if not handled properly. Fortunately, SQL Server provides various methods to check and address pending transactions. This article explores the concept of pending transactions, why they occur, and how to check and resolve them efficiently.

Understanding Pending Transactions
In SQL Server, a transaction represents a set of database operations that are executed together as a single unit. These operations can include inserting, updating, or deleting data from one or multiple tables. The purpose of a transaction is to ensure data consistency and durability; it either commits all changes or rolls them back if an error occurs.

Pending transactions occur when a transaction has started but not yet been committed or rolled back. SQL Server assigns a unique transaction ID (XID) to each active transaction, allowing it to track their progress. Pending transactions can affect database performance by holding locks on resources, potentially leading to blocking and concurrency issues.

Checking Pending Transactions in SQL Server
To check pending transactions in SQL Server, various system views and functions can be utilized. One of the most useful tools is the Dynamic Management Views (DMVs), specifically sys.dm_tran_database_transactions. This view provides detailed information about the active transactions within a database, including those that are pending.

A simple query utilizing sys.dm_tran_database_transactions can retrieve valuable information about pending transactions, such as transaction IDs, transaction start time, transaction state, and the associated database ID. It’s important to note that this information is only available for the current database context, so the query should be executed within the desired database.

Another approach to checking pending transactions is through SQL Server Profiler. Profiler allows administrators to capture and analyze transactions in real-time. By creating a trace to monitor the TSQL: Batch Completed and SQL:BatchStarting events, administrators can identify pending transactions as they occur.

Resolving Pending Transactions
Resolving pending transactions involves either committing or rolling back the transaction, depending on the desired outcome. To do this, the transaction ID obtained from the query or Profiler should be used.

To commit a pending transaction, the COMMIT TRAN command is used, followed by the transaction ID. This command instructs SQL Server to make permanent changes to the database, ensuring data consistency. On the other hand, if the transaction needs to be rolled back, the ROLLBACK TRAN command is used in conjunction with the transaction ID. This command undoes all changes made within the transaction, effectively canceling pending operations.

Alternatively, if multiple pending transactions need to be resolved simultaneously, the KILL command can be utilized. The KILL command terminates a specified transaction by using its transaction ID. This method should be employed with caution, as it can potentially lead to data inconsistency or loss if transactions are terminated improperly.

FAQs

Q: What causes pending transactions in SQL Server?
A: Pending transactions can occur due to various reasons, such as long-running transactions, blocking and deadlocks, uncommitted transactions, or application errors.

Q: Can pending transactions impact database performance?
A: Yes, pending transactions can impact database performance by holding locks on resources, leading to blocking, decreased concurrency, and potential performance degradation.

Q: How can I automate the checking of pending transactions?
A: Pending transactions can be monitored and checked automatically through the creation of scripts or scheduled jobs that execute the necessary queries against sys.dm_tran_database_transactions.

Q: Are there any tools available for monitoring and resolving pending transactions?
A: SQL Server Profiler is a powerful tool that can capture and analyze pending transactions in real-time. Additionally, SQL Server Management Studio (SSMS) provides graphical interfaces and wizards for managing transactions effectively.

Q: Can pending transactions be rolled back automatically?
A: Yes, SQL Server has a built-in mechanism called the “Automatic Transaction Abort” feature. It automatically rolls back long-running transactions that exceed predefined time thresholds, helping to prevent blocking and performance issues.

In conclusion, when dealing with a complex database system like SQL Server, checking pending transactions becomes essential to maintain data consistency and minimize performance-related issues. By employing the provided methods and understanding how to retrieve and resolve pending transactions, administrators can effectively manage and ensure the smooth operation of their SQL Server databases.

Kill Transaction In Sql Server

Kill transaction in SQL Server refers to the action of terminating an active transaction within a database. This feature plays a crucial role in managing and maintaining database integrity, especially in situations where a transaction becomes unresponsive or needs to be interrupted for various reasons. In this article, we will explore the concept of killing transactions in SQL Server, its usage, syntax, and some frequently asked questions about the topic.

Before delving into the details, it’s essential to understand the concept of transactions in the context of SQL Server. A transaction is a logical unit of work defined by a set of SQL statements that should be executed together as a single, atomic operation. It ensures the consistency, isolation, and durability of database operations. However, in some cases, a transaction may encounter issues such as locking conflicts, resource exhaustion, or infinite loops, which can lead to unresponsive or problematic behavior.

In such situations, killing a transaction becomes necessary to release resources, resolve conflicts, or regain control over the database system. SQL Server provides the KILL statement to terminate a specific transaction identified by its transaction ID (or SPID – Server Process ID). The KILL statement can be used by the system administrator or other authorized users to manage transactions and maintain the overall system stability.

To kill a transaction in SQL Server, you need to identify the transaction’s SPID, usually obtained by querying the system views like sys.dm_exec_sessions or sys.sysprocesses. Once you have identified the SPID of the transaction you want to kill, you can execute the KILL statement with the specified SPID as its argument. For example, to kill a transaction with SPID 12345, you would execute:

“`
KILL 12345;
“`

It’s crucial to exercise caution while using the KILL statement, as terminating a transaction abruptly might result in data inconsistencies or corruption. Therefore, it’s recommended to thoroughly analyze the situation and understand the impact of killing a transaction before executing the statement.

Now, let’s address some frequently asked questions about killing transactions in SQL Server:

Q1. What happens when a transaction is killed in SQL Server?
When a transaction is killed using the KILL statement, the database system terminates the transaction abruptly. This action releases any locks or resources held by the transaction and rolls back any changes made by the transaction. It restores the database state to what it was before the transaction began.

Q2. Who can kill a transaction in SQL Server?
By default, only system administrators or other authorized users with appropriate privileges can execute the KILL statement to terminate transactions. Regular users do not have the necessary permissions to kill transactions.

Q3. Can a transaction be killed if it is rolled back or committed?
No, once a transaction is committed or rolled back, it no longer exists as an active transaction and cannot be killed. The KILL statement only applies to active, uncommitted transactions.

Q4. How can I determine which transactions to kill?
To identify transactions that need to be killed, you can query system views like sys.dm_exec_sessions or sys.sysprocesses. These views provide information about active transactions, including their SPIDs, transaction status, and other relevant details. You can use this information to decide which transactions to kill based on the specific criteria or issues you are encountering.

Q5. Is killing a transaction the only way to resolve locking conflicts?
Killing a transaction is not always the recommended solution for resolving locking conflicts. It should be considered as a last resort when other techniques such as modifying isolation levels, optimizing queries, or redesigning the application are not feasible or effective. Killing a transaction should be done with caution, as it might have adverse effects on the data consistency and integrity of the database.

In conclusion, killing transactions in SQL Server is a powerful feature that helps maintain the stability and integrity of a database system. While it can be useful in resolving unresponsive or problematic transactions, it should be used judiciously and only after considering the potential impacts on data consistency. Understanding how to identify transactions and execute the KILL statement correctly is essential for efficiently managing SQL Server transactions.

Images related to the topic how to identify open transactions sql server

How to find blocking queries in sql server
How to find blocking queries in sql server

Found 48 images related to how to identify open transactions sql server theme

Find And Delete Incomplete Open Transactions In Sql Server - Part 2 -  Devart Blog
Find And Delete Incomplete Open Transactions In Sql Server – Part 2 – Devart Blog
Transactions In Sql Server For Beginners
Transactions In Sql Server For Beginners
Understanding Transactions In Sql Server
Understanding Transactions In Sql Server
Understanding Transactions In Sql Server
Understanding Transactions In Sql Server
Reading The Transaction Log In Sql Server - From Hacks To Solutions
Reading The Transaction Log In Sql Server – From Hacks To Solutions
Modes Of Transactions In Sql Server
Modes Of Transactions In Sql Server
How To Check Active Transactions In Sql Server 2014? - Stack Overflow
How To Check Active Transactions In Sql Server 2014? – Stack Overflow
Sql Server Transaction - Javatpoint
Sql Server Transaction – Javatpoint
Sql Server - Identify Oldest Active Transaction With Dbcc Opentran - Sql  Authority With Pinal Dave
Sql Server – Identify Oldest Active Transaction With Dbcc Opentran – Sql Authority With Pinal Dave
Query To Check For Open Transactions In Sql Server
Query To Check For Open Transactions In Sql Server
Sql Server - What Happens To An Open Transaction When The Session Window Is  Closed? - Database Administrators Stack Exchange
Sql Server – What Happens To An Open Transaction When The Session Window Is Closed? – Database Administrators Stack Exchange
Sql | Transactions - Geeksforgeeks
Sql | Transactions – Geeksforgeeks
Dixin'S Blog - Where Is Transaction Events In Sql Server Profiler?
Dixin’S Blog – Where Is Transaction Events In Sql Server Profiler?
Nested Transactions In Sql Server - Dot Net Tutorials
Nested Transactions In Sql Server – Dot Net Tutorials
Backup - Ms Sql Server Db Transaction Log Growth Rate - Database  Administrators Stack Exchange
Backup – Ms Sql Server Db Transaction Log Growth Rate – Database Administrators Stack Exchange
Query Mongodb With Sql (Group By, Distinct, Joins & More)
Query Mongodb With Sql (Group By, Distinct, Joins & More)
Sql Server - Identify Oldest Active Transaction With Dbcc Opentran - Sql  Authority With Pinal Dave
Sql Server – Identify Oldest Active Transaction With Dbcc Opentran – Sql Authority With Pinal Dave
Kill All Processes That Have Open Connection In A Sql Server Database
Kill All Processes That Have Open Connection In A Sql Server Database
Sql Server – Count The Open Transaction – @@Trancount @Sqlserver – Sql  Server Rider
Sql Server – Count The Open Transaction – @@Trancount @Sqlserver – Sql Server Rider
Transaction In Entity Framework 6 & Core
Transaction In Entity Framework 6 & Core
Understanding Transactions In Sql Server
Understanding Transactions In Sql Server
Sql | Transactions - Geeksforgeeks
Sql | Transactions – Geeksforgeeks
How Do I Check Database Corruption In Sql Server?
How Do I Check Database Corruption In Sql Server?
Dixin'S Blog - Where Is Transaction Events In Sql Server Profiler?
Dixin’S Blog – Where Is Transaction Events In Sql Server Profiler?
Exception Handling In Sql Server By Try…Catch
Exception Handling In Sql Server By Try…Catch
Sql Server Set Xact_Abort - Sqlskull
Sql Server Set Xact_Abort – Sqlskull
Is There A Way To List Open Transactions On Sql Server 2000 Database? -  Stack Overflow
Is There A Way To List Open Transactions On Sql Server 2000 Database? – Stack Overflow
How To Determine Sql Server Database Transaction Log Usage
How To Determine Sql Server Database Transaction Log Usage
Sql Server For Beginners. How To Monitor The Sql Server In Real Time? -  Youtube
Sql Server For Beginners. How To Monitor The Sql Server In Real Time? – Youtube
Running Queries: Read-Only Mode, History, Explain Plan, Sql Log - Features  | Datagrip
Running Queries: Read-Only Mode, History, Explain Plan, Sql Log – Features | Datagrip
Microsoft Sql Server Monitoring | Dynatrace Docs
Microsoft Sql Server Monitoring | Dynatrace Docs
Interview Question Of The Week #035 - Different Ways To Identify The Open  Transactions - Sql Authority With Pinal Dave
Interview Question Of The Week #035 – Different Ways To Identify The Open Transactions – Sql Authority With Pinal Dave
Sql Server – Count The Open Transaction – @@Trancount @Sqlserver – Sql  Server Rider
Sql Server – Count The Open Transaction – @@Trancount @Sqlserver – Sql Server Rider
Transaction Log Backup - Sql Server Backup Academy
Transaction Log Backup – Sql Server Backup Academy
Troubleshooting Sql Server Always On Availability Groups
Troubleshooting Sql Server Always On Availability Groups

Article link: how to identify open transactions sql server.

Learn more about the topic how to identify open transactions sql server.

See more: nhanvietluanvan.com/luat-hoc

Leave a Reply

Your email address will not be published. Required fields are marked *