Usando uma Instância de Usuário em uma instância local do SQL Server Express usando Microsoft SqlClient Data Provider for SQL Server

Exemplo de string de conexão com SQL Server usando Microsoft SqlClient Data Provider for SQL Server

Exemplo de string de conexão

Essa é uma string de conexão Microsoft SqlClient Data Provider for SQL Server para se conectar com SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2008 ou SQL Server 2005.

Usando uma Instância de Usuário em uma instância local do SQL Server Express

A funcionalidade de Instância de Usuário cria uma nova instância do SQL Server instantaneamente durante a conexão. Isso só funciona em uma instância local do SQL Server e apenas quando conectando usando autenticação windows sobre pipes nomeados locais. O propósito é poder criar uma instância do SQL Server com plenos direitos para um usuário com direitos administrativos limitados no computador.

Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=C:\Diretorio\Arquivo.mdf;User Instance=true;

Para usar a funcionalidade de Instância de Usuário, você precisa habilitá-la no SQL Server. Isso é feito executando o seguinte comando: sp_configure 'user instances enabled', '1'. Para desabilitar a funcionalidade, execute sp_configure 'user instances enabled', '0'.

Conexão através de diferentes linguagens

C#

Exemplo de código em C# de conexão com SQL Server usando Microsoft SqlClient Data Provider for SQL Server:

using System;
// Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5
using Microsoft.Data.SqlClient;

class DatabaseConnection {
    static void Main() {
        // Define a string de conexão SQL Server usando Microsoft SqlClient Data Provider for SQL Server
        string connectionString = "Data Source=.\\SQLExpress;Integrated Security=true;AttachDbFilename=C:\\Diretorio\\Arquivo.mdf;User Instance=true;";

        using (SqlConnection connection = new SqlConnection(connectionString)) {
            try {
                // Abre a conexão
                connection.Open();

                Console.WriteLine("Conexão aberta com sucesso!");

                //
                // INSIRA SEU CÓDIGO AQUI
                //
                
            } catch (SqlException ex) {
                // Erros específicos do SqlException
                Console.WriteLine("Erro: " + ex.Message);
            } catch (Exception ex) {
                // Outros erros
                Console.WriteLine("Erro: " + ex.Message);            
            } finally {
                // Fecha a conexão
                if (connection != null) {
                    connection.Close();
                    Console.WriteLine("Conexão fechada.");
                }
            }
        }
    }
}

Importante: Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5.

Alternativamente, você pode usar o código abaixo, que usa a classe DbProviderFactory:

using System;
using System.Data.Common;

class DatabaseConnection {
    static void Main() {
        /// Define a string de conexão SQL Server usando Microsoft SqlClient Data Provider for SQL Server
        string connectionString = "Data Source=.\\SQLExpress;Integrated Security=true;AttachDbFilename=C:\\Diretorio\\Arquivo.mdf;User Instance=true;";

        // Cria o objeto factory usando o namespace Microsoft.Data.SqlClient
        // Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5
        DbProviderFactory factory = DbProviderFactories.GetFactory("Microsoft.Data.SqlClient");

        using (DbConnection connection = factory.CreateConnection()) {
            if (connection == null) {
                Console.WriteLine("Não foi possível criar a conexão.");
                return;
            }

            connection.ConnectionString = connectionString;

            try {
                // Abre a conexão
                connection.Open();
                Console.WriteLine("Conexão aberta com sucesso!");

                //
                // INSIRA SEU CÓDIGO AQUI
                //
            }
            catch (DbException ex) {
                // Erros específicos do DbException
                Console.WriteLine("Erro: " + ex.Message);
            }
            catch (Exception ex) {
                // Outros erros
                Console.WriteLine("Erro: " + ex.Message);
            }
            finally {
                // Fecha a conexão
                if (connection != null) {
                    connection.Close();
                    Console.WriteLine("Conexão fechada.");
                }
            }
        }
    }
}

Importante: Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5.

VB.NET

Exemplo de código em VB.NET de conexão com SQL Server usando Microsoft SqlClient Data Provider for SQL Server:

Imports System
' Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5
Imports Microsoft.Data.SqlClient

Public Class DatabaseConnection
    Public Shared Sub Main()
        ' Define a string de conexão SQL Server usando Microsoft SqlClient Data Provider for SQL Server
        Dim connectionString As String = "Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=C:\Diretorio\Arquivo.mdf;User Instance=true;"

        Using connection As New SqlConnection(connectionString)
            Try
                ' Abre a conexão
                connection.Open()

                Console.WriteLine("Conexão aberta com sucesso!")

                '
                ' INSIRA SEU CÓDIGO AQUI
                '

            Catch ex As SqlException
                ' Erros específicos do SqlException
                Console.WriteLine("Erro: " & ex.Message)
            Catch ex As Exception
                ' Outros erros
                Console.WriteLine("Erro: " & ex.Message)
            Finally
                ' Fecha a conexão
                If connection IsNot Nothing Then
                    connection.Close()
                    Console.WriteLine("Conexão fechada.")
                End If
            End Try
        End Using
    End Sub
End Class

Importante: Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5.

Alternativamente, você pode usar o código abaixo, que usa a classe DbProviderFactory:

Imports System
Imports System.Data.Common

Public Class DatabaseConnection
    Public Shared Sub Main()
        ' Define a string de conexão SQL Server usando Microsoft SqlClient Data Provider for SQL Server
        Dim connectionString As String = "Data Source=.\SQLExpress;Integrated Security=true;AttachDbFilename=C:\Diretorio\Arquivo.mdf;User Instance=true;"

        ' Cria o objeto factory usando o namespace Microsoft.Data.SqlClient
        ' Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5
        Dim factory As DbProviderFactory = DbProviderFactories.GetFactory("Microsoft.Data.SqlClient")

        Using connection As DbConnection = factory.CreateConnection()
            If connection Is Nothing Then
                Console.WriteLine("Não foi possível criar a conexão.")
                Return
            End If

            connection.ConnectionString = connectionString

            Try
                ' Abre a conexão
                connection.Open()
                Console.WriteLine("Conexão aberta com sucesso!")

                '
                ' INSIRA SEU CÓDIGO AQUI
                '

            Catch ex As DbException
                ' Erros específicos do DbException
                Console.WriteLine("Erro: " & ex.Message)
            Catch ex As Exception
                ' Outros erros
                Console.WriteLine("Erro: " & ex.Message)
            Finally
                ' Fecha a conexão
                If connection IsNot Nothing Then
                    connection.Close()
                    Console.WriteLine("Conexão fechada.")
                End If
            End Try
        End Using
    End Sub
End Class

Importante: Use o Namespace System.Data.SqlClient em versões anteriores ao .NET 5.