c# - usuario - que es una cadena de conexion
Cómo establecer la cadena de conexión de SQL Server? (7)
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. ¿Hay una cuenta común en SQL Server que tenga una cuenta predeterminada que pueda conectarse? He oído hablar de una cuenta sa
en SQL Server, ¿qué es sa
?
// .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 de confianza
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"Integrated Security=SSPI;";
conn.Open();
Debe comprender que un servidor de base de datos o DBA no querría que cualquiera pudiera conectarse o modificar los contenidos 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 "sa" cosa de la que ha oído hablar, no funciona con SQL Server 2005, 2008 o 2012. Sin embargo, no estoy seguro acerca de las versiones anteriores. Creo que en algún momento de los primeros días de SQL Server, el nombre de usuario predeterminado y pwd 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 ahora. 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 db, por supuesto.
En realidad, puede usar la clase SqlConnectionStringBuilder
para construir su cadena de conexión . Para construir la cadena de conexión , necesita instanciar un objeto de ese SqlConnectionStringBuilder
y establecer sus propiedades con los parámetros que usa para conectarse a la Base de datos. A continuación, puede obtener la cadena de conexión de la propiedad ConnectionString
del objeto SqlConnectionStringBuilder
, 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 new
operador para hacer eso 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 propiedades del objeto SqlConnectionStringBuilder
.
También puede obtener la cadena de conexión de la base de datos desde la conexión de Microsoft Visual Studio con el DB adjunto. 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 clase SqlConnectionStringBuilder
se enumera 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 page , puede ver cómo varía la contraseña.
Usuario de SQL Server 2008 / R2 Express: sa Contraseña: [contraseña en blanco - deje el campo vacío para conectarse]
Usuario de SQL Server 201x Express: sa Contraseña: Password123
Usuario web o estándar de SQL Server 20xx: sa Contraseña: será la misma que su contraseña de administrador o usuario root 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 del Administrador de bases de datos de SQL Server. Como en esta imagen:
Puede utilizar la autenticación de Windows, si su servidor está en el dominio o la autenticación Sql. Sa - es un administrador del sistema, la cuenta raíz para la autentificación del servidor SQL. Pero es una mala práctica utilizarla para conectar a sus clientes. Debe crear sus propias cuentas y usarlas para conectarse a su SQL. En cada conexión establece el inicio de sesión de la cuenta , su contraseña y la base de datos predeterminada , que desea conectar.
Son una serie de cosas de las que preocuparse cuando se conecta a SQL Server en otra máquina.
- Dirección de host / IP de la máquina
- Catálogo inicial (nombre de la base de datos)
- Nombre de usuario / contraseña válidos
Con mucha frecuencia, el servidor SQL se puede ejecutar como intancia predeterminada, lo que significa que simplemente puede especificar el nombre de host / dirección IP, pero puede encontrar un escenario donde se ejecuta como una instancia con nombre (Sql Express, por ejemplo). En este escenario, deberá especificar el nombre de host / nombre de instancia.
sa
es una cuenta de administrador del sistema que viene con el servidor sql por defecto. Como ya sabrá, puede usar dos formas de iniciar sesión en SQL Server.
Por lo tanto, hay cadenas de conexión adecuadas para cada escenario (como la 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 valor de connectionString
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 de confianza
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();