Aracılığıyla paylaş


GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-sql)

Bir oturumun geçerli işlem içeriği temsil eden bir belirteci döndürür. Belirteç, FILESTREAM dosya sistemi akış işlemleri harekete bağlamak için bir uygulama tarafından kullanılır. FILESTREAM Konular listesi için bkz: İkili büyük nesne (Blob) veri (SQL Server).

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

GET_FILESTREAM_TRANSACTION_CONTEXT ()

Dönüş Türü

varbinary(max)

Dönüş Değeri

Hareket değil varsa başlatılmış, veya iptal veya taahhüt, null döndürülür.

Açıklamalar

Hareketin açık olmalıdır. Ardından TRANSACTION COMMIT veya rollback TRANSACTION hareket BEGIN kullanın.

GET_FILESTREAM_TRANSACTION_CONTEXT aradığınızda, arayanın dosya sistemi erişimi için işlem için işlem süresi verilir. Dosya sistemi üzerinden hareket bir başka kullanıcının erişimine izin vermek için GET_FILESTREAM_TRANSACTION_CONTEXT başka bir kullanıcı çalıştırmak için execute as kullanın.

Örnekler

Aşağıdaki örnek GET_FILESTREAM_TRANSACTION_CONTEXTde bir Transact-SQLişlem içeriği almak için işlem.

using System;
using System.Data.SqlClient;
using System.Data;

namespace ConsoleApplication
{
    /// <summary>
    /// This class is a wrapper that contains methods for:
    /// 
    ///     GetTransactionContect() - Returns the current transaction context.
    ///     BeginTransaction() - Begins a transaction.
    ///     CommmitTransaction() - Commits the current transaction.
    /// 
    /// </summary>

    class SqlAccessWrapper
    {
        /// <summary>
        /// Returns a byte array that contains the current transaction
        /// context.
        /// </summary>
        /// <param name="sqlConnection">
        /// SqlConnection object that represents the instance of SQL Server
        /// from which to obtain the transaction context. 
        /// </param>
        /// <returns>
        /// If there is a current transaction context, the return
        /// value is an Object that represents the context.
        /// If there is not a current transaction context, the
        /// value returned is DBNull.Value.
        /// </returns>

        public Object GetTransactionContext(SqlConnection sqlConnection)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "SELECT GET_FILESTREAM_TRANSACTION_CONTEXT()";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection;

            return cmd.ExecuteScalar();

        }

        /// <summary>
        /// Begins the transaction.
        /// </summary>
        /// <param name="sqlConnection">
        /// SqlConnection object that represents the server
        /// on which to run the BEGIN TRANSACTION statement.
        /// </param>

        public void BeginTransaction(SqlConnection sqlConnection)
        {
            SqlCommand cmd = new SqlCommand();

            cmd.CommandText = "BEGIN TRANSACTION";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection;

            cmd.ExecuteNonQuery();
        }

        /// <summary>
        /// Commits the transaction.
        /// </summary>
        /// <param name="sqlConnection">
        /// SqlConnection object that represents the instance of SQL Server
        /// on which to run the COMMIT statement.
        /// </param>

        public void CommitTransaction(SqlConnection sqlConnection)
        {
            SqlCommand cmd = new SqlCommand();

            cmd.CommandText = "COMMIT TRANSACTION";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection;

            cmd.ExecuteNonQuery();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //Open a connection to the local instance of SQL Server.

            SqlConnection sqlConnection = new SqlConnection("Integrated Security=true;server=(local)");
            sqlConnection.Open();

            SqlAccessWrapper sql = new SqlAccessWrapper();

            //Create a transaction so that sql.GetTransactionContext() will succeed.
            sql.BeginTransaction(sqlConnection);

            //The transaction context will be stored in this array.
            Byte[] transactionToken;   

            Object txObj = sql.GetTransactionContext(sqlConnection);
            if (DBNull.Value != txObj)
            {
                transactionToken = (byte[])txObj;
                Console.WriteLine("Transaction context obtained.\n");
            }

            sql.CommitTransaction(sqlConnection);
        }
    }
}
Imports System
Imports System.Data.SqlClient
Imports System.Data

Namespace ConsoleApplication
    ''' <summary> 
    ''' This class is a wrapper that contains methods for: 
    ''' 
    ''' GetTransactionContect() - Returns the current transaction context. 
    ''' BeginTransaction() - Begins a transaction. 
    ''' CommmitTransaction() - Commits the current transaction. 
    ''' 
    ''' </summary> 

    Class SqlAccessWrapper
        ''' <summary> 
        ''' Returns a byte array that contains the current transaction 
        ''' context. 
        ''' </summary> 
        ''' <param name="sqlConnection"> 
        ''' SqlConnection object that represents the instance of SQL Server 
        ''' from which to obtain the transaction context. 
        ''' </param> 
        ''' <returns> 
        ''' If there is a current transaction context, the return 
        ''' value is an Object that represents the context. 
        ''' If there is not a current transaction context, the 
        ''' value returned is DBNull.Value. 
        ''' </returns> 

        Public Function GetTransactionContext(ByVal sqlConnection As SqlConnection) As Object
            Dim cmd As New SqlCommand()
            cmd.CommandText = "SELECT GET_FILESTREAM_TRANSACTION_CONTEXT()"
            cmd.CommandType = CommandType.Text
            cmd.Connection = sqlConnection

            Return cmd.ExecuteScalar()

        End Function

        ''' <summary> 
        ''' Begins the transaction. 
        ''' </summary> 
        ''' <param name="sqlConnection"> 
        ''' SqlConnection object that represents the server 
        ''' on which to run the BEGIN TRANSACTION statement. 
        ''' </param> 

        Public Sub BeginTransaction(ByVal sqlConnection As SqlConnection)
            Dim cmd As New SqlCommand()

            cmd.CommandText = "BEGIN TRANSACTION"
            cmd.CommandType = CommandType.Text
            cmd.Connection = sqlConnection

            cmd.ExecuteNonQuery()
        End Sub

        ''' <summary> 
        ''' Commits the transaction. 
        ''' </summary> 
        ''' <param name="sqlConnection"> 
        ''' SqlConnection object that represents the instance of SQL Server 
        ''' on which to run the COMMIT statement. 
        ''' </param> 

        Public Sub CommitTransaction(ByVal sqlConnection As SqlConnection)
            Dim cmd As New SqlCommand()

            cmd.CommandText = "COMMIT TRANSACTION"
            cmd.CommandType = CommandType.Text
            cmd.Connection = sqlConnection

            cmd.ExecuteNonQuery()
        End Sub
    End Class

    Class Program
        Shared Sub Main()
            '''Open a connection to the local instance of SQL Server.

            Dim sqlConnection As New SqlConnection("Integrated Security=true;server=(local)")
            sqlConnection.Open()

            Dim sql As New SqlAccessWrapper()

            '''Create a transaction so that sql.GetTransactionContext() will succeed. 
            sql.BeginTransaction(sqlConnection)

            '''The transaction context will be stored in this array. 
            Dim transactionToken As Byte()

            Dim txObj As Object = sql.GetTransactionContext(sqlConnection)

            '''If the returned object is not NULL, there is a valid transaction
            '''token, and it must be converted into a format that is usable within
            '''the application.

            If Not txObj.Equals(DBNull.Value) Then
                transactionToken = DirectCast(txObj, Byte())
                Console.WriteLine("Transaction context obtained." & Chr(10) & "")
            End If

            sql.CommitTransaction(sqlConnection)
        End Sub
    End Class
End Namespace

Ayrıca bkz.

Başvuru

Yol adı (Transact-sql)

Kavramlar

İkili büyük nesne (Blob) veri (SQL Server)