Hilfe beim Anhängen einer Datenbank an den MS-SQL - Server (MSDE) [C#]
-
public static bool DateiAlsDatenbankAnhängen(string pfad) { bool Ergebnis = false; string SqlText = "EXEC ? = [dbo].[sp_attach_db] ?, ?, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT"; System.Data.SqlClient.SqlConnection Con = null; System.Data.SqlClient.SqlCommand Cmd = null; System.Data.SqlClient.SqlParameter Para = null; try { Con = new System.Data.SqlClient.SqlConnection( "Persist Security Info=False;Integrated Security=SSPI;database=Database;server=(local);Connect Timeout=30;uid="+System.Environment.UserName+";pwd=;" ); Cmd = new System.Data.SqlClient.SqlCommand(); Cmd.CommandText = SqlText; Para = new System.Data.SqlClient.SqlParameter(); Para.Direction = System.Data.ParameterDirection.ReturnValue; Para.ParameterName = "@RC"; Para.SqlDbType = System.Data.SqlDbType.Int; Cmd.Parameters.Add( Para ); Para = null; Cmd.Parameters.Add("@DbName", System.Data.OleDb.OleDbType.VarChar).Value = DatenbankName; Cmd.Parameters.Add("@FileName", System.Data.OleDb.OleDbType.VarChar).Value = pfad; int i = Convert.ToInt32(Cmd.Parameters["@RC"].Value); Cmd.Connection = Con; Con.Open(); Cmd.ExecuteNonQuery(); Ergebnis = true; } catch ( System.Exception ex ) { Starter.Global.Log.FehlerSchreiben(ex.Message); } finally { if ( Cmd != null ) { Cmd.Dispose(); Cmd = null; } if ( Con != null ) { Con.Close(); Con.Dispose(); Con = null; } } return Ergebnis; }
Beim Con.Open() fliegt eine Exception mit folgender Meldung:
{"Die in der Anmeldung 'Database' angeforderte Datenbank kann nicht geöffnet werden. Fehler bei der Anmeldung.\r\nFehler bei der Anmeldung für den Benutzer 'E201NET03\\C#'." }
Ich denke ich habe im Connection String was falsch gemacht, aber weiss nicht was.......
daher bitte ich um hilfe bzw. tipps.
danke !
-
hmm Ist der Nutzer auch im MS SQL-Server registriert?
Du kannst Nutzer mit Windowsauthentifizblla machen
Als auch Nutzer auf dem SQL-server anlegen mit einer Serverauthentifiz...Desweiteren muss der Nutzer dann auch genügend Rechte haben oder in einer Datenbankrolle sein, die es erlaubt diese gespeicherte Prozedur ausführen zu dürfen!
Melde Dich mit dem Account erstmal normal auf dem Server an und führe die gespeicherte Prozedur im Query Analyzer aus. Nur damit Du sicher bist das der auf den Server kommt und dann noch das Ding ausführen kann.
Schlägt das alles fehl liegts mit hoher Wahrscheinlichkeit wirklich am Connectionstring.
mfg sclearscreen :xmas2:
P.S.: Dieser Nutzer muss unter den Benutzern der DB dort eingetragen sein
muss. Bitte voher überprüfen mittels Enterprisemanager/Objekt-Ansicht links im Queryanalyzer
-
EXEC
als auch das Ausführen dieser Prozedur
darf aauch glaube nur derAdmin des Server
gebe ich schonmal auch zu bedenken!!!
Es sei denn das ist auch so für den Account des Serveruser so eingestellt?
mfg sclearscreen
-
es müsste auch folgendes reichen wenn es denn User auf dem server gibt:
uid=..;pwd=..;database=..;server=localhost;
Reihenfolge der Parameter im Conn-String ist ja egal.
um dann die Connection hinzukriegen nathürlich mit einem registrierten Nutzer auf dem Server versteht sich.
mfg sclearscreen
-
da Du ja ein DB anhängen möchtest
muss dieser User als Benutzer somit als User unter den Benutzern der Masterdatenbank existieren.An/Einhängen einer neuen Db geht dann meines Kenntnisstandes wirklich nur als
Oberguru des MS SQL-Server!!! ---> Adminaccount auf Server