2009-05-11 5 views
0

J'ai essayé de résoudre une exception Castle ActiveRecord depuis des jours maintenant. Chaque fois que j'essaie d'accéder à la base de données, j'obtiens une exception avec une valeur InnerException de "An attempt to attach an auto-named database for file database.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."Castle Active Record: SQL Express ne fonctionne pas. SQL Developer fait

J'essaie de me connecter à une base de données SQL Server Express 2005. Je n'ai aucune autre option de base de données parce que les ordinateurs de l'école n'ont que SQL Express sur eux.

Mes paramètres de connexion

hibernate.connection.driver_class 
    NHibernate.Driver.SqlClientDriver 

hibernate.dialect 

    NHibernate.Dialect.MsSql2005Dialect 
hibernate.connection.provider 
    NHibernate.Connection.DriverConnectionProvider 

hibernate.connection.connection_string 
    Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=database.mdf 

Ce ne parvient pas à travailler même si je mis AttachDBFilename à un chemin absolu. L'instance de l'utilisateur n'a aucun effet. Le fichier de base de données est actuellement dans la racine du projet mélangé avec mes classes WinForms.

Lorsque vous utilisez

hibernate.connection.connection_string 
    Data Source=localhost;Initial Catalog=FinalApp;Integrated Security=True;Pooling=False 

Je n'ai pas rencontrez des difficultés sur mon ordinateur portable, mais je ne peux pas utiliser le SQL Server 2005 Developer Edition sur les ordinateurs de l'école.

Stack trace complète comme l'a demandé

Castle.ActiveRecord.Framework.ActiveRecordException was unhandled 
    Message="Could not perform FindAll for Book" 
    Source="Castle.ActiveRecord" 
    StackTrace: 
     at Castle.ActiveRecord.ActiveRecordBase.FindAll(Type targetType, Order[] orders, ICriterion[] criteria) in c:\dev\castle\svn\branches\1.0.x\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line 1022 
     at Castle.ActiveRecord.ActiveRecordBase.FindAll(Type targetType) in c:\dev\castle\svn\branches\1.0.x\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordBase.cs:line 982 
     at Castle.ActiveRecord.ActiveRecordBase`1.FindAll() in c:\dev\castle\svn\branches\1.0.x\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordBase.Generic.cs:line 333 
     at CSharpFinal.InventoryMain.InventoryMain_Load(Object sender, EventArgs e) in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\CSharpFinal\InventoryMain.cs:line 36 
     at System.Windows.Forms.Form.OnLoad(EventArgs e) 
     at System.Windows.Forms.Form.OnCreateControl() 
     at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
     at System.Windows.Forms.Control.CreateControl() 
     at System.Windows.Forms.Control.WmShowWindow(Message& m) 
     at System.Windows.Forms.Control.WndProc(Message& m) 
     at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
     at System.Windows.Forms.ContainerControl.WndProc(Message& m) 
     at System.Windows.Forms.Form.WmShowWindow(Message& m) 
     at System.Windows.Forms.Form.WndProc(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
     at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow) 
     at System.Windows.Forms.Control.SetVisibleCore(Boolean value) 
     at System.Windows.Forms.Form.SetVisibleCore(Boolean value) 
     at System.Windows.Forms.Control.Show() 
     at CSharpFinal.Form1.inventoryToolStripMenuItem_Click(Object sender, EventArgs e) in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\CSharpFinal\Form1.cs:line 51 
     at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) 
     at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e) 
     at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e) 
     at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e) 
     at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met) 
     at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met) 
     at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) 
     at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea) 
     at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
     at System.Windows.Forms.Control.WndProc(Message& m) 
     at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
     at System.Windows.Forms.ToolStrip.WndProc(Message& m) 
     at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
     at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
     at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.Run(Form mainForm) 
     at CSharpFinal.Program.Main() in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\CSharpFinal\Program.cs:line 17 
     at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 


Castle.ActiveRecord.Framework.ActiveRecordException was unhandled 
    Message="Could not create the schema" 
    Source="Castle.ActiveRecord" 
    StackTrace: 
     at Castle.ActiveRecord.ActiveRecordStarter.CreateSchema() in c:\dev\castle\svn\branches\1.0.x\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs:line 212 
     at CSharpFinal.Form1.reInitializeDatabaseToolStripMenuItem_Click(Object sender, EventArgs e) in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\CSharpFinal\Form1.cs:line 65 
     at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) 
     at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e) 
     at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e) 
     at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e) 
     at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met) 
     at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met) 
     at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) 
     at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea) 
     at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
     at System.Windows.Forms.Control.WndProc(Message& m) 
     at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
     at System.Windows.Forms.ToolStrip.WndProc(Message& m) 
     at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
     at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
     at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
     at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
     at System.Windows.Forms.Application.Run(Form mainForm) 
     at CSharpFinal.Program.Main() in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\CSharpFinal\Program.cs:line 17 
     at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 

InnerException.Message est "An attempt to attach an auto-named database for file database.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."

+0

Veuillez publier la trace complète de la pile –

+0

Deux traces de pile complètes entraînant la même erreur d'exception interne. Je ne pense pas qu'ils aident vraiment. – epochwolf

Répondre

0

Il est probablement Becuase votre chaîne de connexion SQL Express est en train hors instance de l'utilisateur. Si vous laissez l'instance utilisateur activée, SQL liera la base de données si nécessaire, sinon elle l'ouvrira. Si vous l'éteignez, l'attachement est permanent. Toute tentative d'utilisation de la même chaîne de connexion entraînera une erreur car la base de données existe déjà.
Étant donné que vous n'avez pas joint la base de données en utilisant cette chaîne de connexion, vous devrez détacher la base de données avant de pouvoir utiliser la chaîne de connexion correcte. Je vous suggère de télécharger SQL Management Studio Express, si vous ne l'avez pas déjà. Cela vous permettra de voir la base de données déjà attachée et de la détacher facilement. OK, si ce n'est pas le problème, le serveur SQL peut-il accéder au fichier de base de données? A-t-il obtenu des autorisations sur ce dossier? Il s'exécute normalement en tant que service réseau, auquel vous pouvez accorder l'accès au fichier comme n'importe quel autre utilisateur. Vous pouvez supprimer les autorisations de fichiers en accordant un contrôle total à tout le monde. Si cela vous permet de les corriger, vous pouvez modifier les autorisations en fonction des besoins. Je suppose que le compte de service du serveur SQL nécessitera des droits de modification sur le fichier .mdf. Je ne sais pas où il crée le fichier .ldf pour une base de données d'instance utilisateur. Il peut être nécessaire de créer des droits de fichier dans le même dossier que le fichier .mdf.

+0

Cela n'a fait aucune différence. Même exception Trace de pile identique. Même avec un chemin absolu vers le fichier de base de données. – epochwolf

+0

Il est déjà attaché. Vous devez d'abord vous connecter au serveur et déconnecter la base de données existante. Ensuite, supprimez l'instance d'utilisateur définie sur true. – pipTheGeek

+0

La base de données n'est pas jointe dans Management Studio. L'instance d'utilisateur ne fonctionne toujours pas. J'ai essayé de redémarrer et ça ne marche toujours pas. – epochwolf

0

Hmmm, c'est un peu une supposition, mais avez-vous besoin de spécifier un nom de base de données? (Catalogue initial dans la chaîne conn)

+0

Pour une base de données de fichiers? – epochwolf

Questions connexes