Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist das Problem mit AttachDbFilename

Verwenden von User Instance bedeutet, dass SQL Server eine spezielle Kopie dieser Datenbankdatei zur Verwendung durch Ihr Programm erstellt. Wenn Sie zwei verschiedene Programme haben, die dieselbe Verbindungszeichenfolge verwenden, erhalten sie zwei völlig unterschiedliche Kopien der Datenbank. Das führt zu viel Verwirrung, da die Leute das Aktualisieren von Daten mit ihrem Programm testen, dann eine Verbindung zu einer anderen Kopie ihrer Datenbank in Management Studio herstellen und sich darüber beschweren, dass ihr Update nicht funktioniert. Dies schickt sie durch eine fehlerhafte Reihe von wilden Gänsejagdschritten, die versuchen, das falsche Problem zu beheben.

Dieser Artikel geht ausführlicher auf die Verwendung dieser Funktion ein, aber beachten Sie den allerersten Hinweis:die User Instance Funktion wurde eingestellt . In SQL Server 2012 sind die bevorzugten Alternativen (in dieser Reihenfolge, IMHO):

  1. Erstellen Sie Ihre Datenbank oder hängen Sie sie an eine echte Instanz von SQL Server an. Ihre Verbindungszeichenfolge muss dann nur den Instanznamen, den Datenbanknamen und die Anmeldeinformationen angeben. Es wird keine Verwechslung geben, da Management Studio, Visual Studio und Ihre Programme alle eine Verbindung zu einer einzigen Kopie der Datenbank herstellen.

  2. Verwenden Sie SqlLocalDb für die lokale Entwicklung. Ich glaube, ich habe Sie gestern auf diesen Artikel verwiesen:„Erste Schritte mit SQL Server 2012 Express LocalDB.“

  3. Verwenden Sie SQL Server Compact. Ich mag diese Option am wenigsten, weil die Funktionalität und Syntax nicht gleich sind - also wird sie Ihnen nicht unbedingt alle Funktionen bieten, die Sie letztendlich bereitstellen möchten. Die Compact Edition ist ebenfalls veraltet, also gibt es das.

Natürlich, wenn Sie eine Version SqlLocalDb ist keine Option - Sie sollten also eine echte Datenbank erstellen und diese konsequent verwenden. Ich erwähne die Compact-Option nur der Vollständigkeit halber – ich denke, das kann eine fast so schlechte Idee sein wie die Verwendung von AttachDbFileName .

BEARBEITEN: Ich habe hier darüber gebloggt:

  • Schlechte Angewohnheiten:AttachDBFileName verwenden