| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151 |
- //------------------------------------------------------------------------------
- // <copyright file="SqlUtil.cs" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // </copyright>
- // <owner current="true" primary="true">[....]</owner>
- // <owner current="true" primary="false">[....]</owner>
- //------------------------------------------------------------------------------
- namespace System.Data.SqlClient {
- using System;
- using System.ComponentModel;
- using System.Data;
- using System.Data.Common;
- using System.Diagnostics;
- using System.Globalization;
- using System.Reflection;
- using System.Runtime.Serialization.Formatters;
- using System.Security;
- using System.Security.Permissions;
- using System.Security.Principal;
- using System.Threading;
- using System.Text;
- using SysTx = System.Transactions;
- using System.Runtime.Versioning;
- using System.Threading.Tasks;
- using System.Runtime.CompilerServices;
- using System.Runtime.ExceptionServices;
- static internal class AsyncHelper {
- internal static Task CreateContinuationTask(Task task, Action onSuccess, SqlInternalConnectionTds connectionToDoom = null, Action<Exception> onFailure = null) {
- if (task == null) {
- onSuccess();
- return null;
- }
- else {
- TaskCompletionSource<object> completion = new TaskCompletionSource<object>();
- ContinueTask(task, completion,
- () => { onSuccess(); completion.SetResult(null); },
- connectionToDoom, onFailure);
- return completion.Task;
- }
- }
- internal static Task CreateContinuationTask<T1, T2>(Task task, Action<T1, T2> onSuccess, T1 arg1, T2 arg2, SqlInternalConnectionTds connectionToDoom = null, Action<Exception> onFailure = null) {
- return CreateContinuationTask(task, () => onSuccess(arg1, arg2), connectionToDoom, onFailure);
- }
-
- internal static void ContinueTask(Task task,
- TaskCompletionSource<object> completion,
- Action onSuccess,
- SqlInternalConnectionTds connectionToDoom = null,
- Action<Exception> onFailure = null,
- Action onCancellation = null,
- Func<Exception, Exception> exceptionConverter = null,
- SqlConnection connectionToAbort = null
- ) {
- Debug.Assert((connectionToAbort == null) || (connectionToDoom == null), "Should not specify both connectionToDoom and connectionToAbort");
- task.ContinueWith(
- tsk => {
- if (tsk.Exception != null) {
- Exception exc = tsk.Exception.InnerException;
- if (exceptionConverter != null) {
- exc = exceptionConverter(exc);
- }
- try {
- if (onFailure != null) {
- onFailure(exc);
- }
- }
- finally {
- completion.TrySetException(exc);
- }
- }
- else if (tsk.IsCanceled) {
- try {
- if (onCancellation != null) {
- onCancellation();
- }
- }
- finally {
- completion.TrySetCanceled();
- }
- }
- else {
- if (connectionToDoom != null || connectionToAbort!=null) {
- RuntimeHelpers.PrepareConstrainedRegions();
- try {
- #if DEBUG
- TdsParser.ReliabilitySection tdsReliabilitySection = new TdsParser.ReliabilitySection();
- RuntimeHelpers.PrepareConstrainedRegions();
- try {
- tdsReliabilitySection.Start();
- #endif //DEBUG
- onSuccess();
- #if DEBUG
- }
- finally {
- tdsReliabilitySection.Stop();
- }
- #endif //DEBUG
- }
- catch (System.OutOfMemoryException e) {
- if (connectionToDoom != null) {
- connectionToDoom.DoomThisConnection();
- }
- else {
- connectionToAbort.Abort(e);
- }
- completion.SetException(e);
- throw;
- }
- catch (System.StackOverflowException e) {
- if (connectionToDoom != null) {
- connectionToDoom.DoomThisConnection();
- }
- else {
- connectionToAbort.Abort(e);
- }
- completion.SetException(e);
- throw;
- }
- catch (System.Threading.ThreadAbortException e) {
- if (connectionToDoom != null) {
- connectionToDoom.DoomThisConnection();
- }
- else {
- connectionToAbort.Abort(e);
- }
- completion.SetException(e);
- throw;
- }
- catch (Exception e) {
- completion.SetException(e);
- }
- }
- else { // no connection to doom - reliability section not required
- try {
- onSuccess();
- }
- catch (Exception e) {
- completion.SetException(e);
- }
- }
- }
- }, TaskScheduler.Default
- );
- }
- internal static void WaitForCompletion(Task task, int timeout, Action onTimeout = null, bool rethrowExceptions=true) {
- try {
- task.Wait(timeout > 0 ? (1000 * timeout) : Timeout.Infinite);
- }
- catch (AggregateException ae) {
- if (rethrowExceptions) {
- Debug.Assert(ae.InnerExceptions.Count == 1, "There is more than one exception in AggregateException");
- ExceptionDispatchInfo.Capture(ae.InnerException).Throw();
- }
- }
- if (!task.IsCompleted) {
- if (onTimeout != null) {
- onTimeout();
- }
- }
- }
- internal static void SetTimeoutException(TaskCompletionSource<object> completion, int timeout, Func<Exception> exc, CancellationToken ctoken) {
- if (timeout > 0) {
- Task.Delay(timeout * 1000, ctoken).ContinueWith((tsk) => {
- if (!tsk.IsCanceled && !completion.Task.IsCompleted) {
- completion.TrySetException(exc());
- }
- });
- }
- }
- }
- sealed internal class InOutOfProcHelper {
- private static readonly InOutOfProcHelper SingletonInstance = new InOutOfProcHelper();
- private bool _inProc = false;
- // InOutOfProcHelper detects whether it's running inside the server or not. It does this
- // by checking for the existence of a well-known function export on the current process.
- // Note that calling conventions, etc. do not matter -- we'll never call the function, so
- // only the name match or lack thereof matter.
- [ResourceExposure(ResourceScope.None)]
- [ResourceConsumption(ResourceScope.Process, ResourceScope.Process)]
- private InOutOfProcHelper() {
- #if !MONO
- // Don't need to close this handle...
- // SxS: we use this method to check if we are running inside the SQL Server process. This call should be safe in SxS environment.
- IntPtr handle = SafeNativeMethods.GetModuleHandle(null);
- if (IntPtr.Zero != handle) {
- // SQLBU 359301: Currently, the server exports different names for x86 vs. AMD64 and IA64. Supporting both names
- // for now gives the server time to unify names across platforms without breaking currently-working ones.
- // We can remove the obsolete name once the server is changed.
- if (IntPtr.Zero != SafeNativeMethods.GetProcAddress(handle, "_______SQL______Process______Available@0")) {
- _inProc = true;
- }
- else if (IntPtr.Zero != SafeNativeMethods.GetProcAddress(handle, "______SQL______Process______Available")) {
- _inProc = true;
- }
- }
- #endif
- }
- internal static bool InProc {
- get {
- return SingletonInstance._inProc;
- }
- }
- }
- static internal class SQL {
- // The class SQL defines the exceptions that are specific to the SQL Adapter.
- // The class contains functions that take the proper informational variables and then construct
- // the appropriate exception with an error string obtained from the resource Framework.txt.
- // The exception is then returned to the caller, so that the caller may then throw from its
- // location so that the catcher of the exception will have the appropriate call stack.
- // This class is used so that there will be compile time checking of error
- // messages. The resource Framework.txt will ensure proper string text based on the appropriate
- // locale.
- //
- // SQL specific exceptions
- //
- //
- // SQL.Connection
- //
- static internal Exception CannotGetDTCAddress() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_CannotGetDTCAddress));
- }
-
- static internal Exception InvalidOptionLength(string key) {
- return ADP.Argument(Res.GetString(Res.SQL_InvalidOptionLength, key));
- }
- static internal Exception InvalidInternalPacketSize (string str) {
- return ADP.ArgumentOutOfRange (str);
- }
- static internal Exception InvalidPacketSize() {
- return ADP.ArgumentOutOfRange (Res.GetString(Res.SQL_InvalidTDSPacketSize));
- }
- static internal Exception InvalidPacketSizeValue() {
- return ADP.Argument(Res.GetString(Res.SQL_InvalidPacketSizeValue));
- }
- static internal Exception InvalidSSPIPacketSize() {
- return ADP.Argument(Res.GetString(Res.SQL_InvalidSSPIPacketSize));
- }
- static internal Exception NullEmptyTransactionName() {
- return ADP.Argument(Res.GetString(Res.SQL_NullEmptyTransactionName));
- }
- static internal Exception SnapshotNotSupported(IsolationLevel level) {
- return ADP.Argument(Res.GetString(Res.SQL_SnapshotNotSupported, typeof(IsolationLevel), level.ToString()));
- }
- static internal Exception UserInstanceFailoverNotCompatible() {
- return ADP.Argument(Res.GetString(Res.SQL_UserInstanceFailoverNotCompatible));
- }
- static internal Exception InvalidSQLServerVersionUnknown() {
- return ADP.DataAdapter(Res.GetString(Res.SQL_InvalidSQLServerVersionUnknown));
- }
- static internal Exception SynchronousCallMayNotPend() {
- return new Exception(Res.GetString(Res.Sql_InternalError));
- }
- static internal Exception ConnectionLockedForBcpEvent() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ConnectionLockedForBcpEvent));
- }
- static internal Exception AsyncConnectionRequired() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_AsyncConnectionRequired));
- }
- static internal Exception FatalTimeout() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_FatalTimeout));
- }
- static internal Exception InstanceFailure() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_InstanceFailure));
- }
- static internal Exception ChangePasswordArgumentMissing(string argumentName) {
- return ADP.ArgumentNull(Res.GetString(Res.SQL_ChangePasswordArgumentMissing, argumentName));
- }
- static internal Exception ChangePasswordConflictsWithSSPI() {
- return ADP.Argument(Res.GetString(Res.SQL_ChangePasswordConflictsWithSSPI));
- }
- static internal Exception ChangePasswordRequiresYukon() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ChangePasswordRequiresYukon));
- }
- static internal Exception UnknownSysTxIsolationLevel(SysTx.IsolationLevel isolationLevel) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_UnknownSysTxIsolationLevel, isolationLevel.ToString()));
- }
- static internal Exception ChangePasswordUseOfUnallowedKey (string key) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ChangePasswordUseOfUnallowedKey, key));
- }
- static internal Exception InvalidPartnerConfiguration (string server, string database) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_InvalidPartnerConfiguration, server, database));
- }
- static internal Exception MARSUnspportedOnConnection() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_MarsUnsupportedOnConnection));
- }
- static internal Exception CannotModifyPropertyAsyncOperationInProgress(string property) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_CannotModifyPropertyAsyncOperationInProgress, property));
- }
- static internal Exception NonLocalSSEInstance() {
- return ADP.NotSupported(Res.GetString(Res.SQL_NonLocalSSEInstance));
- }
- //
- // SQL.DataCommand
- //
- static internal Exception NotificationsRequireYukon() {
- return ADP.NotSupported(Res.GetString(Res.SQL_NotificationsRequireYukon));
- }
- static internal ArgumentOutOfRangeException NotSupportedEnumerationValue(Type type, int value) {
- return ADP.ArgumentOutOfRange(Res.GetString(Res.SQL_NotSupportedEnumerationValue, type.Name, value.ToString(System.Globalization.CultureInfo.InvariantCulture)), type.Name);
- }
- static internal ArgumentOutOfRangeException NotSupportedCommandType(CommandType value) {
- #if DEBUG
- switch(value) {
- case CommandType.Text:
- case CommandType.StoredProcedure:
- Debug.Assert(false, "valid CommandType " + value.ToString());
- break;
- case CommandType.TableDirect:
- break;
- default:
- Debug.Assert(false, "invalid CommandType " + value.ToString());
- break;
- }
- #endif
- return NotSupportedEnumerationValue(typeof(CommandType), (int)value);
- }
- static internal ArgumentOutOfRangeException NotSupportedIsolationLevel(IsolationLevel value) {
- #if DEBUG
- switch(value) {
- case IsolationLevel.Unspecified:
- case IsolationLevel.ReadCommitted:
- case IsolationLevel.ReadUncommitted:
- case IsolationLevel.RepeatableRead:
- case IsolationLevel.Serializable:
- case IsolationLevel.Snapshot:
- Debug.Assert(false, "valid IsolationLevel " + value.ToString());
- break;
- case IsolationLevel.Chaos:
- break;
- default:
- Debug.Assert(false, "invalid IsolationLevel " + value.ToString());
- break;
- }
- #endif
- return NotSupportedEnumerationValue(typeof(IsolationLevel), (int)value);
- }
- static internal Exception OperationCancelled() {
- Exception exception = ADP.InvalidOperation(Res.GetString(Res.SQL_OperationCancelled));
- return exception;
- }
- static internal Exception PendingBeginXXXExists() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_PendingBeginXXXExists));
- }
- static internal ArgumentOutOfRangeException InvalidSqlDependencyTimeout(string param) {
- return ADP.ArgumentOutOfRange(Res.GetString(Res.SqlDependency_InvalidTimeout), param);
- }
- static internal Exception NonXmlResult() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_NonXmlResult));
- }
- //
- // SQL.DataParameter
- //
- static internal Exception InvalidUdt3PartNameFormat() {
- return ADP.Argument(Res.GetString(Res.SQL_InvalidUdt3PartNameFormat));
- }
- static internal Exception InvalidParameterTypeNameFormat() {
- return ADP.Argument(Res.GetString(Res.SQL_InvalidParameterTypeNameFormat));
- }
- static internal Exception InvalidParameterNameLength(string value) {
- return ADP.Argument(Res.GetString(Res.SQL_InvalidParameterNameLength, value));
- }
- static internal Exception PrecisionValueOutOfRange(byte precision) {
- return ADP.Argument(Res.GetString(Res.SQL_PrecisionValueOutOfRange, precision.ToString(CultureInfo.InvariantCulture)));
- }
- static internal Exception ScaleValueOutOfRange(byte scale) {
- return ADP.Argument(Res.GetString(Res.SQL_ScaleValueOutOfRange, scale.ToString(CultureInfo.InvariantCulture)));
- }
- static internal Exception TimeScaleValueOutOfRange(byte scale) {
- return ADP.Argument(Res.GetString(Res.SQL_TimeScaleValueOutOfRange, scale.ToString(CultureInfo.InvariantCulture)));
- }
- static internal Exception InvalidSqlDbType(SqlDbType value) {
- return ADP.InvalidEnumerationValue(typeof(SqlDbType), (int) value);
- }
- static internal Exception UnsupportedTVPOutputParameter(ParameterDirection direction, string paramName) {
- return ADP.NotSupported(Res.GetString(Res.SqlParameter_UnsupportedTVPOutputParameter,
- direction.ToString(), paramName));
- }
- static internal Exception DBNullNotSupportedForTVPValues(string paramName) {
- return ADP.NotSupported(Res.GetString(Res.SqlParameter_DBNullNotSupportedForTVP, paramName));
- }
- static internal Exception InvalidTableDerivedPrecisionForTvp(string columnName, byte precision) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlParameter_InvalidTableDerivedPrecisionForTvp, precision, columnName, System.Data.SqlTypes.SqlDecimal.MaxPrecision));
- }
- static internal Exception UnexpectedTypeNameForNonStructParams(string paramName) {
- return ADP.NotSupported(Res.GetString(Res.SqlParameter_UnexpectedTypeNameForNonStruct, paramName));
- }
- static internal Exception SingleValuedStructNotSupported() {
- return ADP.NotSupported(Res.GetString(Res.MetaType_SingleValuedStructNotSupported));
- }
- static internal Exception ParameterInvalidVariant(string paramName) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ParameterInvalidVariant, paramName));
- }
- static internal Exception MustSetTypeNameForParam(string paramType, string paramName) {
- return ADP.Argument(Res.GetString(Res.SQL_ParameterTypeNameRequired, paramType, paramName));
- }
- static internal Exception NullSchemaTableDataTypeNotSupported(string columnName) {
- return ADP.Argument(Res.GetString(Res.NullSchemaTableDataTypeNotSupported, columnName));
- }
- static internal Exception InvalidSchemaTableOrdinals() {
- return ADP.Argument(Res.GetString(Res.InvalidSchemaTableOrdinals));
- }
- static internal Exception EnumeratedRecordMetaDataChanged(string fieldName, int recordNumber) {
- return ADP.Argument(Res.GetString(Res.SQL_EnumeratedRecordMetaDataChanged, fieldName, recordNumber));
- }
- static internal Exception EnumeratedRecordFieldCountChanged(int recordNumber) {
- return ADP.Argument(Res.GetString(Res.SQL_EnumeratedRecordFieldCountChanged, recordNumber));
- }
- //
- // SQL.SqlDataAdapter
- //
- //
- // SQL.TDSParser
- //
- static internal Exception InvalidTDSVersion() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_InvalidTDSVersion));
- }
- static internal Exception ParsingError() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ParsingError));
- }
- static internal Exception MoneyOverflow(string moneyValue) {
- return ADP.Overflow(Res.GetString(Res.SQL_MoneyOverflow, moneyValue));
- }
- static internal Exception SmallDateTimeOverflow(string datetime) {
- return ADP.Overflow(Res.GetString(Res.SQL_SmallDateTimeOverflow, datetime));
- }
- static internal Exception SNIPacketAllocationFailure() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SNIPacketAllocationFailure));
- }
- static internal Exception TimeOverflow(string time) {
- return ADP.Overflow(Res.GetString(Res.SQL_TimeOverflow, time));
- }
- //
- // SQL.SqlDataReader
- //
- static internal Exception InvalidRead() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_InvalidRead));
- }
- static internal Exception NonBlobColumn(string columnName) {
- return ADP.InvalidCast(Res.GetString(Res.SQL_NonBlobColumn, columnName));
- }
- static internal Exception NonCharColumn(string columnName) {
- return ADP.InvalidCast(Res.GetString(Res.SQL_NonCharColumn, columnName));
- }
- static internal Exception StreamNotSupportOnColumnType(string columnName) {
- return ADP.InvalidCast(Res.GetString(Res.SQL_StreamNotSupportOnColumnType, columnName));
- }
- static internal Exception TextReaderNotSupportOnColumnType(string columnName) {
- return ADP.InvalidCast(Res.GetString(Res.SQL_TextReaderNotSupportOnColumnType, columnName));
- }
- static internal Exception XmlReaderNotSupportOnColumnType(string columnName) {
- return ADP.InvalidCast(Res.GetString(Res.SQL_XmlReaderNotSupportOnColumnType, columnName));
- }
- static internal Exception UDTUnexpectedResult(string exceptionText){
- return ADP.TypeLoad(Res.GetString(Res.SQLUDT_Unexpected,exceptionText));
- }
- //
- // SQL.SqlDelegatedTransaction
- //
- static internal Exception CannotCompleteDelegatedTransactionWithOpenResults(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(TdsEnums.TIMEOUT_EXPIRED, (byte)0x00, TdsEnums.MIN_ERROR_CLASS, null, (Res.GetString(Res.ADP_OpenReaderExists)), "", 0, TdsEnums.SNI_WAIT_TIMEOUT));
- return SqlException.CreateException(errors, null, internalConnection);
- }
- static internal SysTx.TransactionPromotionException PromotionFailed(Exception inner) {
- SysTx.TransactionPromotionException e = new SysTx.TransactionPromotionException(Res.GetString(Res.SqlDelegatedTransaction_PromotionFailed), inner);
- ADP.TraceExceptionAsReturnValue(e);
- return e;
- }
- //
- // SQL.SqlDependency
- //
- static internal Exception SqlCommandHasExistingSqlNotificationRequest(){
- return ADP.InvalidOperation(Res.GetString(Res.SQLNotify_AlreadyHasCommand));
- }
- static internal Exception SqlDepCannotBeCreatedInProc() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlNotify_SqlDepCannotBeCreatedInProc));
- }
- static internal Exception SqlDepDefaultOptionsButNoStart() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_DefaultOptionsButNoStart));
- }
- static internal Exception SqlDependencyDatabaseBrokerDisabled() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_DatabaseBrokerDisabled));
- }
- static internal Exception SqlDependencyEventNoDuplicate() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_EventNoDuplicate));
- }
- static internal Exception SqlDependencyDuplicateStart() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_DuplicateStart));
- }
- static internal Exception SqlDependencyIdMismatch() {
- // do not include the id because it may require SecurityPermission(Infrastructure) permission
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_IdMismatch));
- }
-
- static internal Exception SqlDependencyNoMatchingServerStart() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_NoMatchingServerStart));
- }
- static internal Exception SqlDependencyNoMatchingServerDatabaseStart() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlDependency_NoMatchingServerDatabaseStart));
- }
- static internal Exception SqlNotificationException(SqlNotificationEventArgs notify){
- return ADP.InvalidOperation(Res.GetString(Res.SQLNotify_ErrorFormat, notify.Type,notify.Info,notify.Source));
- }
- //
- // SQL.SqlMetaData
- //
- static internal Exception SqlMetaDataNoMetaData(){
- return ADP.InvalidOperation(Res.GetString(Res.SqlMetaData_NoMetadata));
- }
- static internal Exception MustSetUdtTypeNameForUdtParams(){
- return ADP.Argument(Res.GetString(Res.SQLUDT_InvalidUdtTypeName));
- }
- static internal Exception UnexpectedUdtTypeNameForNonUdtParams(){
- return ADP.Argument(Res.GetString(Res.SQLUDT_UnexpectedUdtTypeName));
- }
- static internal Exception UDTInvalidSqlType(string typeName){
- return ADP.Argument(Res.GetString(Res.SQLUDT_InvalidSqlType, typeName));
- }
- static internal Exception InvalidSqlDbTypeForConstructor(SqlDbType type) {
- return ADP.Argument(Res.GetString(Res.SqlMetaData_InvalidSqlDbTypeForConstructorFormat, type.ToString()));
- }
- static internal Exception NameTooLong(string parameterName) {
- return ADP.Argument(Res.GetString(Res.SqlMetaData_NameTooLong), parameterName);
- }
- static internal Exception InvalidSortOrder(SortOrder order) {
- return ADP.InvalidEnumerationValue(typeof(SortOrder), (int)order);
- }
- static internal Exception MustSpecifyBothSortOrderAndOrdinal(SortOrder order, int ordinal) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlMetaData_SpecifyBothSortOrderAndOrdinal, order.ToString(), ordinal));
- }
- static internal Exception TableTypeCanOnlyBeParameter() {
- return ADP.Argument(Res.GetString(Res.SQLTVP_TableTypeCanOnlyBeParameter));
- }
- static internal Exception UnsupportedColumnTypeForSqlProvider(string columnName, string typeName) {
- return ADP.Argument(Res.GetString(Res.SqlProvider_InvalidDataColumnType, columnName, typeName));
- }
- static internal Exception InvalidColumnMaxLength(string columnName, long maxLength) {
- return ADP.Argument(Res.GetString(Res.SqlProvider_InvalidDataColumnMaxLength, columnName, maxLength));
- }
- static internal Exception InvalidColumnPrecScale() {
- return ADP.Argument(Res.GetString(Res.SqlMisc_InvalidPrecScaleMessage));
- }
- static internal Exception NotEnoughColumnsInStructuredType() {
- return ADP.Argument(Res.GetString(Res.SqlProvider_NotEnoughColumnsInStructuredType));
- }
- static internal Exception DuplicateSortOrdinal(int sortOrdinal) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlProvider_DuplicateSortOrdinal, sortOrdinal));
- }
- static internal Exception MissingSortOrdinal(int sortOrdinal) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlProvider_MissingSortOrdinal, sortOrdinal));
- }
- static internal Exception SortOrdinalGreaterThanFieldCount(int columnOrdinal, int sortOrdinal) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlProvider_SortOrdinalGreaterThanFieldCount, sortOrdinal, columnOrdinal));
- }
- static internal Exception IEnumerableOfSqlDataRecordHasNoRows() {
- return ADP.Argument(Res.GetString(Res.IEnumerableOfSqlDataRecordHasNoRows));
- }
-
-
- //
- // SqlPipe
- //
- static internal Exception SqlPipeCommandHookedUpToNonContextConnection() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlPipe_CommandHookedUpToNonContextConnection));
- }
- static internal Exception SqlPipeMessageTooLong( int messageLength ) {
- return ADP.Argument(Res.GetString(Res.SqlPipe_MessageTooLong, messageLength));
- }
-
- static internal Exception SqlPipeIsBusy() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlPipe_IsBusy));
- }
- static internal Exception SqlPipeAlreadyHasAnOpenResultSet( string methodName ) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlPipe_AlreadyHasAnOpenResultSet, methodName));
- }
- static internal Exception SqlPipeDoesNotHaveAnOpenResultSet( string methodName ) {
- return ADP.InvalidOperation(Res.GetString(Res.SqlPipe_DoesNotHaveAnOpenResultSet, methodName));
- }
- //
- // : ISqlResultSet
- //
- static internal Exception SqlResultSetClosed(string methodname) {
- if (methodname == null) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlResultSetClosed2));
- }
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlResultSetClosed, methodname));
- }
- static internal Exception SqlResultSetNoData(string methodname) {
- return ADP.InvalidOperation(Res.GetString(Res.ADP_DataReaderNoData, methodname));
- }
- static internal Exception SqlRecordReadOnly(string methodname) {
- if (methodname == null) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlRecordReadOnly2));
- }
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlRecordReadOnly, methodname));
- }
- static internal Exception SqlResultSetRowDeleted(string methodname) {
- if (methodname == null) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlResultSetRowDeleted2));
- }
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlResultSetRowDeleted, methodname));
- }
- static internal Exception SqlResultSetCommandNotInSameConnection() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlResultSetCommandNotInSameConnection));
- }
- static internal Exception SqlResultSetNoAcceptableCursor() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_SqlResultSetNoAcceptableCursor));
- }
- //
- // SQL.BulkLoad
- //
- static internal Exception BulkLoadMappingInaccessible() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadMappingInaccessible));
- }
- static internal Exception BulkLoadMappingsNamesOrOrdinalsOnly() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadMappingsNamesOrOrdinalsOnly));
- }
- static internal Exception BulkLoadCannotConvertValue(Type sourcetype, MetaType metatype, Exception e) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadCannotConvertValue, sourcetype.Name, metatype.TypeName), e);
- }
- static internal Exception BulkLoadNonMatchingColumnMapping() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadNonMatchingColumnMapping));
- }
- static internal Exception BulkLoadNonMatchingColumnName(string columnName) {
- return BulkLoadNonMatchingColumnName(columnName, null);
- }
- static internal Exception BulkLoadNonMatchingColumnName(string columnName, Exception e) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadNonMatchingColumnName, columnName), e);
- }
- static internal Exception BulkLoadStringTooLong() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadStringTooLong));
- }
- static internal Exception BulkLoadInvalidVariantValue() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadInvalidVariantValue));
- }
- static internal Exception BulkLoadInvalidTimeout(int timeout) {
- return ADP.Argument(Res.GetString(Res.SQL_BulkLoadInvalidTimeout, timeout.ToString(CultureInfo.InvariantCulture)));
- }
- static internal Exception BulkLoadExistingTransaction() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadExistingTransaction));
- }
- static internal Exception BulkLoadNoCollation() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadNoCollation));
- }
- static internal Exception BulkLoadConflictingTransactionOption() {
- return ADP.Argument(Res.GetString(Res.SQL_BulkLoadConflictingTransactionOption));
- }
- static internal Exception BulkLoadLcidMismatch(int sourceLcid, string sourceColumnName, int destinationLcid, string destinationColumnName) {
- return ADP.InvalidOperation (Res.GetString (Res.Sql_BulkLoadLcidMismatch, sourceLcid, sourceColumnName, destinationLcid, destinationColumnName));
- }
- static internal Exception InvalidOperationInsideEvent() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadInvalidOperationInsideEvent));
- }
- static internal Exception BulkLoadMissingDestinationTable() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadMissingDestinationTable));
- }
- static internal Exception BulkLoadInvalidDestinationTable(string tableName, Exception inner) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadInvalidDestinationTable, tableName), inner);
- }
- static internal Exception BulkLoadBulkLoadNotAllowDBNull(string columnName) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadNotAllowDBNull, columnName));
- }
- static internal Exception BulkLoadPendingOperation() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BulkLoadPendingOperation));
- }
- //
- // transactions.
- //
- static internal Exception ConnectionDoomed() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ConnectionDoomed));
- }
- static internal Exception OpenResultCountExceeded() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_OpenResultCountExceeded));
- }
- static internal readonly byte[] AttentionHeader = new byte[] {
- TdsEnums.MT_ATTN, // Message Type
- TdsEnums.ST_EOM, // Status
- TdsEnums.HEADER_LEN >> 8, // length - upper byte
- TdsEnums.HEADER_LEN & 0xff, // length - lower byte
- 0, // spid
- 0, // spid
- 0, // packet (out of band)
- 0 // window
- };
- //
- // MultiSubnetFailover
- //
- /// <summary>
- /// used to block two scenarios if MultiSubnetFailover is true:
- /// * server-provided failover partner - raising SqlException in this case
- /// * connection string with failover partner and MultiSubnetFailover=true - rasing argument one in this case with the same message
- /// </summary>
- static internal Exception MultiSubnetFailoverWithFailoverPartner(bool serverProvidedFailoverPartner, SqlInternalConnectionTds internalConnection) {
- string msg = Res.GetString(Res.SQLMSF_FailoverPartnerNotSupported);
- if (serverProvidedFailoverPartner) {
- // VSTFDEVDIV\DevDiv2\179041 - replacing InvalidOperation with SQL exception
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, msg, "", 0));
- SqlException exc = SqlException.CreateException(errors, null, internalConnection);
- exc._doNotReconnect = true; // disable open retry logic on this error
- return exc;
- }
- else {
- return ADP.Argument(msg);
- }
- }
- static internal Exception MultiSubnetFailoverWithMoreThan64IPs() {
- string msg = GetSNIErrorMessage((int)SNINativeMethodWrapper.SniSpecialErrors.MultiSubnetFailoverWithMoreThan64IPs);
- return ADP.InvalidOperation(msg);
- }
- static internal Exception MultiSubnetFailoverWithInstanceSpecified() {
- string msg = GetSNIErrorMessage((int)SNINativeMethodWrapper.SniSpecialErrors.MultiSubnetFailoverWithInstanceSpecified);
- return ADP.Argument(msg);
- }
- static internal Exception MultiSubnetFailoverWithNonTcpProtocol() {
- string msg = GetSNIErrorMessage((int)SNINativeMethodWrapper.SniSpecialErrors.MultiSubnetFailoverWithNonTcpProtocol);
- return ADP.Argument(msg);
- }
- //
- // Read-only routing
- //
- static internal Exception ROR_FailoverNotSupportedConnString() {
- return ADP.Argument(Res.GetString(Res.SQLROR_FailoverNotSupported));
- }
- static internal Exception ROR_FailoverNotSupportedServer(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, (Res.GetString(Res.SQLROR_FailoverNotSupported)), "", 0));
- SqlException exc = SqlException.CreateException(errors, null, internalConnection);
- exc._doNotReconnect = true;
- return exc;
- }
- static internal Exception ROR_RecursiveRoutingNotSupported(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, (Res.GetString(Res.SQLROR_RecursiveRoutingNotSupported)), "", 0));
- SqlException exc=SqlException.CreateException(errors, null, internalConnection);
- exc._doNotReconnect = true;
- return exc;
- }
- static internal Exception ROR_UnexpectedRoutingInfo(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, (Res.GetString(Res.SQLROR_UnexpectedRoutingInfo)), "", 0));
- SqlException exc = SqlException.CreateException(errors, null, internalConnection);
- exc._doNotReconnect = true;
- return exc;
- }
- static internal Exception ROR_InvalidRoutingInfo(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, (Res.GetString(Res.SQLROR_InvalidRoutingInfo)), "", 0));
- SqlException exc = SqlException.CreateException(errors, null, internalConnection);
- exc._doNotReconnect = true;
- return exc;
- }
- static internal Exception ROR_TimeoutAfterRoutingInfo(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, (byte)0x00, TdsEnums.FATAL_ERROR_CLASS, null, (Res.GetString(Res.SQLROR_TimeoutAfterRoutingInfo)), "", 0));
- SqlException exc = SqlException.CreateException(errors, null, internalConnection);
- exc._doNotReconnect = true;
- return exc;
- }
- //
- // Connection resiliency
- //
- static internal SqlException CR_ReconnectTimeout() {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(TdsEnums.TIMEOUT_EXPIRED, (byte)0x00, TdsEnums.MIN_ERROR_CLASS, null, SQLMessage.Timeout(), "", 0, TdsEnums.SNI_WAIT_TIMEOUT));
- SqlException exc = SqlException.CreateException(errors, "");
- return exc;
- }
- static internal SqlException CR_ReconnectionCancelled() {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.MIN_ERROR_CLASS, null, SQLMessage.OperationCancelled(), "", 0));
- SqlException exc = SqlException.CreateException(errors, "");
- return exc;
- }
- static internal Exception CR_NextAttemptWillExceedQueryTimeout(SqlException innerException, Guid connectionId) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.MIN_ERROR_CLASS, null, Res.GetString(Res.SQLCR_NextAttemptWillExceedQueryTimeout), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", connectionId, innerException);
- return exc;
- }
-
- static internal Exception CR_EncryptionChanged(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.FATAL_ERROR_CLASS, null, Res.GetString(Res.SQLCR_EncryptionChanged), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", internalConnection);
- return exc;
- }
- static internal SqlException CR_AllAttemptsFailed(SqlException innerException, Guid connectionId) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.MIN_ERROR_CLASS, null, Res.GetString(Res.SQLCR_AllAttemptsFailed), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", connectionId, innerException);
- return exc;
- }
- static internal SqlException CR_NoCRAckAtReconnection(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.FATAL_ERROR_CLASS, null, Res.GetString(Res.SQLCR_NoCRAckAtReconnection), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", internalConnection);
- return exc;
- }
- static internal SqlException CR_TDSVersionNotPreserved(SqlInternalConnectionTds internalConnection) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.FATAL_ERROR_CLASS, null, Res.GetString(Res.SQLCR_TDSVestionNotPreserved), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", internalConnection);
- return exc;
- }
- static internal SqlException CR_UnrecoverableServer(Guid connectionId) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.FATAL_ERROR_CLASS, null, Res.GetString(Res.SQLCR_UnrecoverableServer), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", connectionId);
- return exc;
- }
- static internal SqlException CR_UnrecoverableClient(Guid connectionId) {
- SqlErrorCollection errors = new SqlErrorCollection();
- errors.Add(new SqlError(0, 0, TdsEnums.FATAL_ERROR_CLASS, null, Res.GetString(Res.SQLCR_UnrecoverableClient), "", 0));
- SqlException exc = SqlException.CreateException(errors, "", connectionId);
- return exc;
- }
- //
- // Merged Provider
- //
- static internal Exception BatchedUpdatesNotAvailableOnContextConnection() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_BatchedUpdatesNotAvailableOnContextConnection));
- }
- static internal Exception ContextAllowsLimitedKeywords() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ContextAllowsLimitedKeywords));
- }
- static internal Exception ContextAllowsOnlyTypeSystem2005() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ContextAllowsOnlyTypeSystem2005));
- }
- static internal Exception ContextConnectionIsInUse() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ContextConnectionIsInUse));
- }
- static internal Exception ContextUnavailableOutOfProc() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ContextUnavailableOutOfProc));
- }
- static internal Exception ContextUnavailableWhileInProc() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_ContextUnavailableWhileInProc));
- }
- static internal Exception NestedTransactionScopesNotSupported() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_NestedTransactionScopesNotSupported));
- }
- static internal Exception NotAvailableOnContextConnection() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_NotAvailableOnContextConnection));
- }
- static internal Exception NotificationsNotAvailableOnContextConnection() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_NotificationsNotAvailableOnContextConnection));
- }
- static internal Exception UnexpectedSmiEvent(Microsoft.SqlServer.Server.SmiEventSink_Default.UnexpectedEventType eventType) {
- Debug.Assert(false, "UnexpectedSmiEvent: "+eventType.ToString()); // Assert here, because these exceptions will most likely be eaten by the server.
- return ADP.InvalidOperation(Res.GetString(Res.SQL_UnexpectedSmiEvent, (int)eventType));
- }
- static internal Exception UserInstanceNotAvailableInProc() {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_UserInstanceNotAvailableInProc));
- }
- static internal Exception ArgumentLengthMismatch( string arg1, string arg2 ) {
- return ADP.Argument( Res.GetString( Res.SQL_ArgumentLengthMismatch, arg1, arg2 ) );
- }
- static internal Exception InvalidSqlDbTypeOneAllowedType( SqlDbType invalidType, string method, SqlDbType allowedType ) {
- return ADP.Argument( Res.GetString( Res.SQL_InvalidSqlDbTypeWithOneAllowedType, invalidType, method, allowedType ) );
- }
- static internal Exception SqlPipeErrorRequiresSendEnd( ) {
- return ADP.InvalidOperation(Res.GetString(Res.SQL_PipeErrorRequiresSendEnd));
- }
- static internal Exception TooManyValues(string arg) {
- return ADP.Argument(Res.GetString(Res.SQL_TooManyValues), arg);
- }
- static internal Exception StreamWriteNotSupported() {
- return ADP.NotSupported(Res.GetString(Res.SQL_StreamWriteNotSupported));
- }
- static internal Exception StreamReadNotSupported() {
- return ADP.NotSupported(Res.GetString(Res.SQL_StreamReadNotSupported));
- }
- static internal Exception StreamSeekNotSupported() {
- return ADP.NotSupported(Res.GetString(Res.SQL_StreamSeekNotSupported));
- }
- static internal System.Data.SqlTypes.SqlNullValueException SqlNullValue() {
- System.Data.SqlTypes.SqlNullValueException e = new System.Data.SqlTypes.SqlNullValueException();
- ADP.TraceExceptionAsReturnValue(e);
- return e;
- }
- // SQLBU 402363: Exception to prevent Parameter.Size data corruption case from working.
- // This should be temporary until changing to correct behavior can be safely implemented.
- static internal Exception ParameterSizeRestrictionFailure(int index) {
- return ADP.InvalidOperation(Res.GetString(Res.OleDb_CommandParameterError, index.ToString(CultureInfo.InvariantCulture), "SqlParameter.Size"));
- }
- static internal Exception SubclassMustOverride() {
- return ADP.InvalidOperation(Res.GetString(Res.SqlMisc_SubclassMustOverride));
- }
- /// <summary>
- /// gets a message for SNI error (sniError must be valid, non-zero error code)
- /// </summary>
- static internal string GetSNIErrorMessage(int sniError) {
- Debug.Assert(sniError > 0 && sniError <= (int)SNINativeMethodWrapper.SniSpecialErrors.MaxErrorValue, "SNI error is out of range");
- string errorMessageId = String.Format((IFormatProvider)null, "SNI_ERROR_{0}", sniError);
- return Res.GetString(errorMessageId);
- }
- // BulkLoad
- internal const string WriteToServer = "WriteToServer";
- // Default values for SqlDependency and SqlNotificationRequest
- internal const int SqlDependencyTimeoutDefault = 0;
- internal const int SqlDependencyServerTimeout = 5 * 24 * 3600; // 5 days - used to compute default TTL of the dependency
- internal const string SqlNotificationServiceDefault = "SqlQueryNotificationService";
- internal const string SqlNotificationStoredProcedureDefault = "SqlQueryNotificationStoredProcedure";
- // constant strings
- internal const string Transaction= "Transaction";
- internal const string Connection = "Connection";
- }
- sealed internal class SQLMessage {
- //
- private SQLMessage() { /* prevent utility class from being insantiated*/ }
- // The class SQLMessage defines the error messages that are specific to the SqlDataAdapter
- // that are caused by a netlib error. The functions will be called and then return the
- // appropriate error message from the resource Framework.txt. The SqlDataAdapter will then
- // take the error message and then create a SqlError for the message and then place
- // that into a SqlException that is either thrown to the user or cached for throwing at
- // a later time. This class is used so that there will be compile time checking of error
- // messages. The resource Framework.txt will ensure proper string text based on the appropriate
- // locale.
- static internal string CultureIdError() {
- return Res.GetString(Res.SQL_CultureIdError);
- }
- static internal string EncryptionNotSupportedByClient() {
- return Res.GetString(Res.SQL_EncryptionNotSupportedByClient);
- }
- static internal string EncryptionNotSupportedByServer() {
- return Res.GetString(Res.SQL_EncryptionNotSupportedByServer);
- }
- static internal string OperationCancelled() {
- return Res.GetString(Res.SQL_OperationCancelled);
- }
- static internal string SevereError() {
- return Res.GetString(Res.SQL_SevereError);
- }
- static internal string SSPIInitializeError() {
- return Res.GetString(Res.SQL_SSPIInitializeError);
- }
- static internal string SSPIGenerateError() {
- return Res.GetString(Res.SQL_SSPIGenerateError);
- }
- static internal string Timeout() {
- return Res.GetString(Res.SQL_Timeout);
- }
- static internal string Timeout_PreLogin_Begin() {
- return Res.GetString(Res.SQL_Timeout_PreLogin_Begin);
- }
- static internal string Timeout_PreLogin_InitializeConnection() {
- return Res.GetString(Res.SQL_Timeout_PreLogin_InitializeConnection);
- }
- static internal string Timeout_PreLogin_SendHandshake() {
- return Res.GetString(Res.SQL_Timeout_PreLogin_SendHandshake);
- }
- static internal string Timeout_PreLogin_ConsumeHandshake() {
- return Res.GetString(Res.SQL_Timeout_PreLogin_ConsumeHandshake);
- }
- static internal string Timeout_Login_Begin() {
- return Res.GetString(Res.SQL_Timeout_Login_Begin);
- }
- static internal string Timeout_Login_ProcessConnectionAuth() {
- return Res.GetString(Res.SQL_Timeout_Login_ProcessConnectionAuth);
- }
- static internal string Timeout_PostLogin() {
- return Res.GetString(Res.SQL_Timeout_PostLogin);
- }
- static internal string Timeout_FailoverInfo() {
- return Res.GetString(Res.SQL_Timeout_FailoverInfo);
- }
- static internal string Timeout_RoutingDestination() {
- return Res.GetString(Res.SQL_Timeout_RoutingDestinationInfo);
- }
- static internal string Duration_PreLogin_Begin(long PreLoginBeginDuration) {
- return Res.GetString(Res.SQL_Duration_PreLogin_Begin, PreLoginBeginDuration);
- }
- static internal string Duration_PreLoginHandshake(long PreLoginBeginDuration, long PreLoginHandshakeDuration) {
- return Res.GetString(Res.SQL_Duration_PreLoginHandshake, PreLoginBeginDuration, PreLoginHandshakeDuration);
- }
- static internal string Duration_Login_Begin(long PreLoginBeginDuration, long PreLoginHandshakeDuration, long LoginBeginDuration) {
- return Res.GetString(Res.SQL_Duration_Login_Begin, PreLoginBeginDuration, PreLoginHandshakeDuration, LoginBeginDuration);
- }
- static internal string Duration_Login_ProcessConnectionAuth(long PreLoginBeginDuration, long PreLoginHandshakeDuration, long LoginBeginDuration, long LoginAuthDuration) {
- return Res.GetString(Res.SQL_Duration_Login_ProcessConnectionAuth, PreLoginBeginDuration, PreLoginHandshakeDuration, LoginBeginDuration, LoginAuthDuration);
- }
- static internal string Duration_PostLogin(long PreLoginBeginDuration, long PreLoginHandshakeDuration, long LoginBeginDuration, long LoginAuthDuration, long PostLoginDuration) {
- return Res.GetString(Res.SQL_Duration_PostLogin, PreLoginBeginDuration, PreLoginHandshakeDuration, LoginBeginDuration, LoginAuthDuration, PostLoginDuration);
- }
- static internal string UserInstanceFailure() {
- return Res.GetString(Res.SQL_UserInstanceFailure);
- }
- static internal string PreloginError() {
- return Res.GetString(Res.Snix_PreLogin);
- }
- static internal string ExClientConnectionId() {
- return Res.GetString(Res.SQL_ExClientConnectionId);
- }
- static internal string ExErrorNumberStateClass() {
- return Res.GetString(Res.SQL_ExErrorNumberStateClass);
- }
- static internal string ExOriginalClientConnectionId() {
- return Res.GetString(Res.SQL_ExOriginalClientConnectionId);
- }
- static internal string ExRoutingDestination() {
- return Res.GetString(Res.SQL_ExRoutingDestination);
- }
- }
- /// <summary>
- /// This class holds helper methods to escape Microsoft SQL Server identifiers, such as table, schema, database or other names
- /// </summary>
- static internal class SqlServerEscapeHelper {
- /// <summary>
- /// Escapes the identifier with square brackets. The input has to be in unescaped form, like the parts received from MultipartIdentifier.ParseMultipartIdentifier.
- /// </summary>
- /// <param name="name">name of the identifier, in unescaped form</param>
- /// <returns>escapes the name with [], also escapes the last close bracket with double-bracket</returns>
- static internal string EscapeIdentifier(string name) {
- Debug.Assert(!ADP.IsEmpty(name), "null or empty identifiers are not allowed");
- return "[" + name.Replace("]", "]]") + "]";
- }
- /// <summary>
- /// Same as above EscapeIdentifier, except that output is written into StringBuilder
- /// </summary>
- static internal void EscapeIdentifier(StringBuilder builder, string name) {
- Debug.Assert(builder != null, "builder cannot be null");
- Debug.Assert(!ADP.IsEmpty(name), "null or empty identifiers are not allowed");
- builder.Append("[");
- builder.Append(name.Replace("]", "]]"));
- builder.Append("]");
- }
- /// <summary>
- /// Escape a string to be used inside TSQL literal, such as N'somename' or 'somename'
- /// </summary>
- static internal string EscapeStringAsLiteral(string input) {
- Debug.Assert(input != null, "input string cannot be null");
- return input.Replace("'", "''");
- }
- /// <summary>
- /// Escape a string as a TSQL literal, wrapping it around with single quotes.
- /// Use this method to escape input strings to prevent SQL injection
- /// and to get correct behavior for embedded quotes.
- /// </summary>
- /// <param name="input">unescaped string</param>
- /// <returns>escaped and quoted literal string</returns>
- static internal string MakeStringLiteral(string input) {
- if (ADP.IsEmpty(input)) {
- return "''";
- }
- else {
- return "'" + EscapeStringAsLiteral(input) + "'";
- }
- }
- }
- }//namespace
|