基本上,每次我运行游戏时,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();
}
答案 0 :(得分:1)
但是,我无法打开DataBase.mdf文件,因为它甚至没有显示在SMSS中。因此,我不确定如何获得重新访问数据库的特权。我还尝试删除了我添加到数据库中的所有更改,这些更改首先导致了错误,但是错误仍然存在。
问题中有一个令人困惑的部分,当您无法连接.MDF
时,如何删除已添加到数据库中的更改。
但是,以下步骤可能有助于使数据库恢复正常:
me-PC\me
)拥有C:\USERS\ME\SOURCE\REPOS\A GIRL CALLED LORRY\A GIRL CALLED LORRY\DATABASE.MDF
的权限Database.mdf
附加到SQL Express引擎中。您可以通过SSMS使用以下命令来执行此操作"Data Source=Localhost\\SQLEXPRESS;Initial Catalog=YourNewDBName;Integrated Security=True"
--- 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;