Visual Basic.NET - Abrir una base de datos dese otra pc

 
Vista:

Abrir una base de datos dese otra pc

Publicado por Emilia Sanchez (8 intervenciones) el 12/07/2004 17:41:19
Necesito ayuda por favor.... tengo un sistema que tengo que arreglar y al parecer no lo hicieron para correr en red.... tengo este codigo



Private Sub conectarse()

CadenaConexion = "Data Source=" + nombreservidor + "; " + "Initial Catalog=Palomas; " + "integrated security= SSPI; persist security info= False; " & "user id= " + Environment.UserDomainName.ToString + "; " + "workstation id= " + Environment.StackTrace.ToString & (+"; " + "packet size= 4096")



Si esta corriendo el sistema en la misma pc donde esta la base de datos no se tiene problema alguno, pero al instalarlo en otra pc no corre me envia este error:



System.Data.SqlClient.SqlException: Login failed for user 'SERVER\Invitado'.

at System.Data.SqlClient.SqlConnection.Open()

at Sistema.loginpassword.comparar() in C:\SistemaCartera\Sistema\loginpassword.vb:line 273

at Sistema.loginpassword.btaceptar_Click(Object sender, EventArgs e) in C:\SistemaCartera\Sistema\loginpassword.vb:line 245

at System.Windows.Forms.Control.OnClick(EventArgs e)

at System.Windows.Forms.Button.OnClick(EventArgs e)

at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

at System.Windows.Forms.Control.WndProc(Message& m)

at System.Windows.Forms.ButtonBase.WndProc(Message& m)

at System.Windows.Forms.Button.WndProc(Message& m)

at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)

at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)

at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



Como puedo llamar al servidor (la pc donde se tiene la base dedatos) yo solo le pongo el nombre del servidor que en este caso es SERVER dierctamente en el codigo



Public nombreservidor As String = "SERVER"

Public ServerName As String = "SERVER"



tengo que agregarle algo a esta parte para que accese desde otra pc al servidor



Agradezco de antemano su ayuda

Emilia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abrir una base de datos dese otra pc

Publicado por Edgar (1501 intervenciones) el 12/07/2004 18:01:19
Hola

En primer lugar, el nombre del servidor debe ser el nombre del equipo en donde va a estar el servidor SQL (o su IP). Por otra parte, el nombre de usuario debe estar registrado como usuario de tu BD, por lo que veo, debes tener integrada la autentificación por Windows en el servidor, para lo cual vas a necesitar la contraseña. En todo caso, te recomendaria que mejor uses la autentificación por SQL para que no tengas mayor problema.

Recuerda colocar tu código entre un bloque Try/Catch para que no te de ese error, de esta manera podrás capturarlo y ejecutar una acción que sea más elegante al usuario

Saludos

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir una base de datos dese otra pc

Publicado por Emilia Sanchez (8 intervenciones) el 12/07/2004 20:57:36
Gracias Edgar por contestarme... si esta el nombre del equipo donde esta el SQL Server y el nombre de ususario tambien esta registrado como usuario de la BD... ademas de que el codigo de conexion lo tengo dentro de un bloque Try
Private Sub btaceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btaceptar.Click
If txtadministrador.Text.Trim = "" Then
MessageBox.Show("Por favor introduzca el Nombre de Administrador!", "Contraseña", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txtadministrador.Focus()
Exit Sub
End If
If txtcontraseña.Text.Trim = "" Then
MessageBox.Show("Por favor introduzca la Contraseña!", "Contraseña", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txtcontraseña.Focus()
Exit Sub
End If
Dim login, password, login2, password2 As String
login = UCase(txtadministrador.Text.Trim)
password = UCase(txtcontraseña.Text.Trim)
CadenaConexion = "Data Source=" + nombreservidor + "; " + "Initial Catalog=System; " + "integrated security= SSPI; persist security info= False; " & _
"user id= " + Environment.UserName.ToString + "; " + "workstation id= " + Environment.MachineName.ToString + "; " + "packet size= 4096"
Try
dbConnection = New Data.SqlClient.SqlConnection(CadenaConexion)
entrada = True
Catch ex As Exception
MessageBox.Show("Error al crear la Conexión a la Base de Datos", "Mensaje de Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
dbConnection.Open()
CadenaSelect = "SELECT * FROM acceso ORDER BY usuario"
dbDataAdapter = New System.Data.SqlClient.SqlDataAdapter(CadenaSelect, dbConnection)
dbDataSet = New System.Data.DataSet()
Dim commandBuilder As New Data.SqlClient.SqlCommandBuilder(dbDataAdapter)
dbDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
dbDataAdapter.Fill(dbDataSet, "acceso")
Dim i, j As Integer
i = dbDataSet.Tables("acceso").Rows.Count
While j < i
login2 = dbDataSet.Tables("acceso").Rows(j).Item("usuario").ToString
password2 = _ dbDataSet.Tables("acceso").Rows(j).Item("contraseña").ToString
If login = login2 And password = password2 Then
Me.Hide()
Dim c As editaracceso = New editaracceso()
c.Show() ' Mostrar la ventana
Exit Sub
End If
j += 1
End While
MessageBox.Show("Usuario y Contraseña Incorrectos.", "Error de Contraseña", MessageBoxButtons.OK, MessageBoxIcon.Error)
txtadministrador.Clear()
txtcontraseña.Text = ""
txtadministrador.Focus()
'CERRAR LA CONEXION CON LA BASE DE DATOS
dbConnection.Close()
End Sub

Tal vez el problema es lo que me comentas de tener la autentificacion por windows en lugar de ser directamente por SQL... me pudieras decir como se hace eso por favor...

Gracias de antemano
Emilia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir una base de datos dese otra pc

Publicado por Edgar (1501 intervenciones) el 12/07/2004 21:38:01
Hola

Asumo que la autentificacióne s por windows ya que según tu mensaje anterior mencionas que el error te dice algo de error al intentar autentificar el usuario Serivdor/Invitado, esta es una cuenta de windows.

Para verificar esto, entra por el Administrador Corporativo de SQL, y en las propiedades del servidor verás en la pestaña seguridad dos opciones: "autentificación por windows" y "SQL y windows"

Revisa a ver si el problema entonces es de autentificación por windows, o revisa a ver si el conflicto te lo puede estar causando el workstation-id

Por otra parte, ya que tienes el nombre de usuario y contraseña, lo busques directamente sobre la base de datos con el login y password que tienes, es decir, usa la consulta, SELECT * FROM acceso WHERE CO_USUARIO = USUARIO AND PASSWORD = PASS. Podrías uasr un DataReader en vez de un dataset tambien.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir una base de datos dese otra pc

Publicado por Emilia Sanchez (8 intervenciones) el 13/07/2004 17:57:58
Hola Edgar... gracias por tu interes... Ya revise en el Admonistrador Corporativo de SQL las propiedades del servidor, estaba seleccionada la autentificacion por windows y lo cambie a SQL y Windows.
Ya revise el workstation id, tambien esta tal y como lo manda llamar el sistema... y el user y password estan dados de alta en la tabla correspondiente en la base de datos ... pero el problema sigue... me sigue diciendo que tengo un error ...
Login Failed user "SERVER\invitado"
System.Data.SqlClient Sql Exception

Ojala tengas alguna otra idea por favor de lo que puede estar causando este conflicto... te lo agradezco desde ya...
Saludos
Emilia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir una base de datos dese otra pc

Publicado por Emilia Sanchez (8 intervenciones) el 13/07/2004 18:45:12
De nuevo... Instale el Studio. Net en una de las workstations para poder correr el sistema por pasos... y tengo esto:

CadenaConexion = "Data Source=" + nombreservidor + "; " + "Initial Catalog=Palomas; " + "integrated security= SSPI; persist security info= False; " & _
"user id= " + Environment.UserName.ToString + "; " + "workstation id= " + Environment.MachineName.ToString + "; " + "packet size= 4096"

Y Cuyos valores son estos:

Cadenaconexion = "Data Source = SERVER; Initial Catalog = Systema; Integrated security =SSPI; Persist Security Info = FALSE; user id = workstation01; Workstation id= PCworkstation01; packet size = 4096"

todo esta bien hasta aqui (segun creo)
mas adelante toma los valores de user y password
y cuando llego a
dbConnection.Open() es cuando me marca este error:
Exception no controlada del tipo Sytem.Data.SqlClient.SqlException en systemdata.dll

Espero esto ayude a ayudar mas...
Gracias de nuevo
Emilia

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir una base de datos dese otra pc

Publicado por Edgar (1501 intervenciones) el 13/07/2004 20:30:59
Hola

El error es el mismo que me describiste anteriormente?? es decir, el problema tambien está con que no puede validar el usuario Invitado?

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir una base de datos dese otra pc

Publicado por Edgar (1501 intervenciones) el 13/07/2004 18:53:39
Hola

Environment.UserName te devuelve el usuario que inició la aplicación, por el error que te da, este usuario es el invitado (sesión de windows), el problema es que por seguridad el SQL server no está permitiendo conexiones del usuario invitado, debes entonces iniciar la sesión con un usuario registrado (en la red), o usar, como te mencione anteriormente la autentificación por SQL, esto lo haces colocando el mismo nombre de usuario y contraseña que utilizas para tener acceso a la base de datos a través del analizador de consultas

Con esto el problema deberia quedar resuelto

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar