登录名请求的“ C:\ USERS \ ME \ DATABASE.MDF”。登录失败。用户“ me-PC \ me”的登录失败

时间:2019-09-03 07:19:53

标签: c# sql-server visual-studio

基本上,每次我运行游戏时,MS SQL数据库崩溃并返回此错误消息。

  

无法打开登录请求的数据库“ C:\ USERS \ ME \ SOURCE \ REPOS \ GIRL CALLED LORRY \ A GIRL CALLED LORRY \ DATABASE.MDF”。登录失败。   用户'me-PC \ me'登录失败。

我没有更改项目中的任何SQL或C#代码来导致此错误。我所做的只是简单地通过添加新的字符串类型列来修改数据库中的表。

我尝试使用SMSS在项目中打开DataBase.mdf文件,以查看用户是否具有访问权限,但是我无法打开DataBase.mdf文件,因为它无法打开甚至出现在SMSS中。因此,我不确定如何获得重新访问数据库的特权。我还尝试删除了我添加到数据库中的所有更改,这些更改首先导致了错误,但是错误仍然存​​在。

正如我所说的,该错误是由修改数据库中的表引起的,但是有一小段代码,当我尝试打开数据库以删除数据时游戏就会崩溃:

//this method is used to initialize the database.
public static void createSave() {

        //database stuff:
        con = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\me\\source\\repos\\A Girl Called Lorry\\A Girl Called Lorry\\Database.mdf;Integrated Security=True");
        adp = new SqlDataAdapter();

        ds = new DataSet();
        Console.WriteLine("we are in!");
        //the below code only initializes if isNewGame is set to true.
        removeAllFromInventory();
        rewriteCurrentObjects();
        loadDefaultNpcs();
    }

//removeAllFromInventory is where it crashes.
//removes all items from inventory:
    public static void removeAllFromInventory() { //this only applies if  
//isNewGame is set to true since we want to wipe the inventory in a new game
        if (!isNewGame) return;
        con.Open(); //here is where it crashes.
        adp.SelectCommand = new SqlCommand("DELETE FROM curInventoryItems", con);
        adp.SelectCommand.ExecuteNonQuery();
        con.Close();
    }

1 个答案:

答案 0 :(得分:1)

  

但是,我无法打开DataBase.mdf文件,因为它甚至没有显示在SMSS中。因此,我不确定如何获得重新访问数据库的特权。我还尝试删除了我添加到数据库中的所有更改,这些更改首先导致了错误,但是错误仍然存​​在。

问题中有一个令人困惑的部分,当您无法连接.MDF时,如何删除已添加到数据库中的更改。

但是,以下步骤可能有助于使数据库恢复正常:

  1. 验证帐户(me-PC\me)拥有C:\USERS\ME\SOURCE\REPOS\A GIRL CALLED LORRY\A GIRL CALLED LORRY\DATABASE.MDF的权限
  2. 如果获得许可后仍然无法使用,则可以对SQL Localdb连接using these steps
  3. 进行故障排除
  4. 安装SQL Express(因为使用LocalDB数据库引擎很难管理),并将Database.mdf附加到SQL Express引擎中。您可以通过SSMS使用以下命令来执行此操作
  5. 一旦在SQL Express上准备好数据库,就可以将连接字符串更改为"Data Source=Localhost\\SQLEXPRESS;Initial Catalog=YourNewDBName;Integrated Security=True"
  6. 如果甚至在使用SQL Express时也遇到问题,you may follow these steps..
--- You need to move "Database.mdf" and ".ldf" files into "C"\SQLData" folder before executing the command

CREATE DATABASE YourDatabase   
    ON (FILENAME = 'C:\SQLData\Database.mdf'),   
    (FILENAME = 'C:\SQLData\Database_log.ldf')   
    FOR ATTACH;