¿Cómo configurar la cadena de conexión de SQL Server?

93

Estoy desarrollando una aplicación C # simple, me gustaría saber esto: cuando conecto mi aplicación a SQL Server en mi PC, conozco la cadena de conexión (nombre del servidor, contraseña, etc.), pero cuando la conecto a otra PC, la cadena de conexión de SQL Server es diferente. ¿Existe una cuenta común en SQL Server que viene con una cuenta predeterminada que se puede conectar? He oído hablar de la sacuenta en SQL Server, ¿qué es sa?

Roshan
fuente
5
Nunca querrá usar un nombre de usuario y contraseña de cuenta predeterminados para configurar el acceso a SQL Server o cualquier tipo de conexión para el caso.
jordanhill123
4
SAsys_adminrol de servidor sql media
Elshan
2
¿Puede utilizar la autenticación de Windows en lugar de la autenticación de SQL Server? Eso evitaría tener que usar ID de usuario y contraseñas por completo.
Philip Sheard

Respuestas:

128

.NET DataProvider: conexión estándar con nombre de usuario y contraseña

using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "User id=UserName;" +
  "Password=Secret;";
conn.Open();

.NET DataProvider - Conexión confiable

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
  "Data Source=ServerName;" +
  "Initial Catalog=DataBaseName;" +
  "Integrated Security=SSPI;";
conn.Open();

Consulte el doc .

Itachi
fuente
1
¿Cómo puedo usar este formato pero usar un usuario de dominio? Sigo obteniendo un subrayado rojo cuando lo uso user id=Domain\Uname. Creo que es algo que tiene que ver con caracteres de escape no válidos, ¿cómo debo hacerlo correctamente?
Wairimu Murigi
1
@Wairimu Murigi Tienes que escapar de la barra invertida, es decir, ID de usuario = Dominio \\ Uname
John Hartley
1
@Itachi: Perdón por el necropost. ¿Ingresamos esto en la línea de comandos de Windows usando SQLCMD?
MSIS
1
Mi contraseña contiene ;caracteres
Kiquenet
1
@Kiquenet Puedes probar con comillas simples o dobles para ajustarlo, mira esto .
Itachi
30

En realidad, puede usar la SqlConnectionStringBuilderclase para construir su cadena de conexión . Para construir la cadena de conexión , necesita crear una instancia de un objeto a partir de eso SqlConnectionStringBuildery establecer sus propiedades con los parámetros que usa para conectarse a la base de datos. Luego, puede obtener la cadena de conexión de la ConnectionStringpropiedad del SqlConnectionStringBuilderobjeto, como se muestra en este ejemplo:

Por ejemplo:

    SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

Puede usar el newoperador para hacerlo directamente.

Por ejemplo:

SqlConnection conn = new SqlConnection(
    new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString
);

Puede agregar más parámetros para construir su cadena de conexión . Recuerde que los parámetros están definidos por los valores establecidos en las SqlConnectionStringBuilderpropiedades del objeto.

También puede obtener la cadena de conexión de la base de datos de la conexión de Microsoft Visual Studio con la base de datos adjunta. Cuando selecciona la base de datos, en el panel de propiedades se muestra la cadena de conexión .

La lista completa de propiedades de la SqlConnectionStringBuilderclase se incluye en esta página del sitio de Microsoft MSDN.

Acerca del usuario predeterminado de SQL Server, sa significa "administrador del sistema" y su contraseña varía según la versión de SQL Server. En esta página puede ver cómo varía la contraseña.

SQL Server 2008 / R2 Express Usuario: sa Contraseña: [contraseña en blanco - deje el campo vacío para conectarse]

SQL Server 201x Express Usuario: sa Contraseña: Password123

SQL Server 20xx Web o Usuario estándar: sa Contraseña: será la misma que la contraseña de administrador o usuario raíz en el momento en que se aprovisionó el VDS.

Puede iniciar sesión con un usuario sa en esta ventana de inicio de sesión al inicio de SQL Server Database Manager. Como en esta imagen:

Ejemplo de inicio de sesión

CriogénicoNeo
fuente
15

Proveedor de datos .NET - Ruta relativa predeterminada - Conexión estándar

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();

Proveedor de datos .NET: ruta relativa predeterminada: conexión confiable

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

Proveedor de datos .NET - Ruta relativa personalizada - Conexión estándar

using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();  

Proveedor de datos .NET - Ruta relativa personalizada - Conexión de confianza

 using System.Data.SqlClient;
 AppDomain.CurrentDomain.SetData(
 "DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
Hemlata Gehlot
fuente
11

Puede usar la cadena de conexión de la siguiente manera y solo necesita agregar el nombre de su base de datos.

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";
Chamila Maddumage
fuente
8

Son varias cosas de las que preocuparse cuando se conecta a SQL Server en otra máquina.

  • Host / Dirección IP de la máquina
  • Catálogo inicial (nombre de la base de datos)
  • Nombre de usuario / contraseña válidos

Muy a menudo, el servidor SQL puede ejecutarse como una instancia predeterminada, lo que significa que simplemente puede especificar el nombre de host / dirección IP, pero puede encontrar un escenario en el que se ejecuta como una instancia con nombre (Sql Express, por ejemplo). En este escenario, deberá especificar nombre de host \ nombre de instancia.

scartag
fuente
6

Debe comprender que un servidor de base de datos o un DBA no querría que cualquiera pudiera conectarse o modificar el contenido del servidor. Este es el propósito de las cuentas de seguridad. Si un solo nombre de usuario / pwd funcionara en cualquier máquina, no proporcionaría protección. Esa cosa de la que ha oído hablar no funciona con SQL Server 2005, 2008 o 2012. Sin embargo, no estoy seguro de las versiones anteriores. Creo que en algún lugar de los primeros días de SQL Server, el nombre de usuario y la contraseña predeterminados solían ser sa / sa, pero ese ya no es el caso.

Para su información, la seguridad de la base de datos y los roles son mucho más complicados hoy en día. Es posible que desee examinar los detalles de la autenticación basada en Windows. Si su SQL Server está configurado para ello, no necesita ningún nombre de usuario / pwd en la cadena de conexión para conectarse. Todo lo que necesita cambiar es el nombre de la máquina del servidor y la misma cadena de conexión funcionará con ambas máquinas, dado que ambas tienen el mismo nombre de base de datos, por supuesto.

punto net
fuente
1
sa es la cuenta sysadmin para SQL Server. Si se instaló con autenticación de servidor SQL o autenticación de modo mixto, debe configurar una cuenta sa. Para referencia futura, aquí hay una guía sobre cómo configurar la cuenta sa si no se instaló con la autenticación del servidor SQL activada.
iCodeSometime
6

Puede usar la autenticación de Windows, si su servidor está en el dominio, o la autenticación de SQL. Sa: es un administrador del sistema, la cuenta raíz para la autenticación del servidor SQL. Pero es una mala práctica utilizarlo para conectar a sus clientes. Debe crear sus propias cuentas y usarlas para conectarse a su SQL. En cada conexión, configura el inicio de sesión de la cuenta , su contraseña y la base de datos predeterminada que desea conectarse.

Alex
fuente
6

saes una cuenta de administrador del sistema que viene con el servidor SQL de forma predeterminada. Como ya sabrá, puede utilizar dos formas de iniciar sesión en SQL Server.

captura de pantalla de SQL Server Management Studio

Por lo tanto, existen cadenas de conexión adecuadas para cada escenario (como autenticación de Windows, localdb, etc.). Use https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlserver para construir su cadena de conexión. Estas son etiquetas XML. Solo necesitas el valor de connectionString

Menuka Ishan
fuente
4

Simplemente podemos conectarnos a la base de datos:

 uid=username;pwd=password;database=databasename;server=servername

P.ej:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);
Praneeth Gopinathan
fuente
-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

Prueba este

VLB DE MEL
fuente