Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Oturumun geçerli işlem bağlamını temsil eden bir belirteç döndürür. Belirteç, bir uygulama tarafından FILESTREAM dosya sistemi akış işlemlerini işleme bağlamak için kullanılır. FILESTREAM makalelerinin listesi için bkz. İkili Büyük Nesne (Blob) Verileri (SQL Server).
Transact-SQL söz dizimi kuralları
Sözdizimi
GET_FILESTREAM_TRANSACTION_CONTEXT()
Dönüş türleri
varbinary(max)
Dönüş değeri
NULL , işlem başlatılmadıysa veya iptal edildiyse veya işlendiyse döndürülür.
Açıklamalar
İşlem açık olmalıdır. veya ile COMMIT TRANSACTIONROLLBACK TRANSACTIONbirlikte kullanınBEGIN TRANSACTION.
çağrısı GET_FILESTREAM_TRANSACTION_CONTEXTyaptığınızda, çağırana işlem süresi boyunca işlem için dosya sistemi erişimi verilir. Başka bir kullanıcının dosya sistemi aracılığıyla işleme erişmesine izin vermek için komutunu kullanarak EXECUTE AS diğer kullanıcı olarak çalıştırın GET_FILESTREAM_TRANSACTION_CONTEXT .
Örnekler
Aşağıdaki örnek, işlem bağlamını elde etmek için bir Transact-SQL işleminde kullanır GET_FILESTREAM_TRANSACTION_CONTEXT .
using System;
using System.Data.SqlClient;
using System.Data;
namespace ConsoleApplication
{
/// <summary>
/// This class is a wrapper that contains methods for:
///
/// GetTransactionContext() - Returns the current transaction context.
/// BeginTransaction() - Begins a transaction.
/// CommitTransaction() - 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);
}
}
}