Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं एसक्यूएल सर्वर सिस्टम संदेश से वापसी मूल्य कैसे प्राप्त कर सकता हूं?

सूचनात्मक संदेश (10 से कम गंभीरता के साथ) और प्रिंट आउटपुट क्लाइंट को वापस कर दिए जाते हैं, और InfoMessage के रूप में उठाया जाता है SqlConnection . द्वारा ईवेंट उदाहरण। प्रत्येक ईवेंट में SqlError का संग्रह होता है ऑब्जेक्ट्स (यह वही वर्ग है जिसका उपयोग SqlException.Errors . में किया जाता है )।

यहां एक पूरा उदाहरण दिया गया है जो कनेक्शन स्थिति परिवर्तन, सूचना संदेश और अपवाद दिखाता है। ध्यान दें कि मैं ExecuteReader का उपयोग करता हूं ExecuteNonQuery . के बजाय , लेकिन जानकारी और अपवाद परिणाम समान हैं।

namespace Test
{
    using System;
    using System.Data;
    using System.Data.SqlClient;

    public class Program
    {
        public static int Main(string[] args)
        {
            if (args.Length != 2)
            {
                Usage();
                return 1;
            }

            var conn = args[0];
            var sqlText = args[1];
            ShowSqlErrorsAndInfo(conn, sqlText);

            return 0;
        }

        private static void Usage()
        {
            Console.WriteLine("Usage: sqlServerConnectionString sqlCommand");
            Console.WriteLine("");
            Console.WriteLine("   example:  \"Data Source=.;Integrated Security=true\" \"DBCC CHECKDB\"");
        }

        public static void ShowSqlErrorsAndInfo(string connectionString, string query)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.StateChange += OnStateChange;
                connection.InfoMessage += OnInfoMessage;

                SqlCommand command = new SqlCommand(query, connection);
                try
                {
                    command.Connection.Open();
                    Console.WriteLine("Command execution starting.");
                    SqlDataReader dr = command.ExecuteReader();
                    if (dr.HasRows)
                    {
                        Console.WriteLine("Rows returned.");
                        while (dr.Read())
                        {
                            for (int idx = 0; idx < dr.FieldCount; idx++)
                            {
                                Console.Write("{0} ", dr[idx].ToString());
                            }

                            Console.WriteLine();
                        }
                    }

                    Console.WriteLine("Command execution complete.");
                }
                catch (SqlException ex)
                {
                    DisplaySqlErrors(ex);
                }
                finally
                {
                    command.Connection.Close();
                }
            }
        }

        private static void DisplaySqlErrors(SqlException exception)
        {
            foreach (SqlError err in exception.Errors)
            {
                Console.WriteLine("ERROR: {0}", err.Message);
            }
        }

        private static void OnInfoMessage(object sender, SqlInfoMessageEventArgs e)
        {
            foreach (SqlError info in e.Errors)
            {
                Console.WriteLine("INFO: {0}", info.Message);
            }
        }

        private static void OnStateChange(object sender, StateChangeEventArgs e)
        {
            Console.WriteLine("Connection state changed: {0} => {1}", e.OriginalState, e.CurrentState);
        }
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस से .NET कॉन्फ़िगरेशन पढ़ें

  2. Laravel . से संग्रहित प्रक्रिया को कैसे निष्पादित करें

  3. SQL सर्वर में संयोजन

  4. एन्क्रिप्टेड डेटाबेस को पुनर्स्थापित करने का प्रयास करने में समस्याएं आ रही हैं

  5. SQL सर्वर में डेटाबेस मेल को कॉन्फ़िगर करना