小编MyD*_*ons的帖子

我无法访问任何数据库图表

我的数据库在我的 Windows Server 2016 标准上运行良好。数据库管理系统为 Microsoft SQL Server 2017 Express。

今天我添加了一个新的表格和内容,一切都很好。我尝试打开数据库图并收到错误消息:

在此处输入图片说明

如果图像不起作用,消息是:

无法作为数据库主体执行,因为权限“dbo”不存在,无法模拟此类主体,或者您没有权限。(Microsoft SQL Server,错误:15517)

我的服务器上没有任何变化 - 没有更新等。

我可以访问所有表。当我查看我登录的帐户时,我可以看到我是数据库所有者,其他帖子建议这样做 - 但我以前并不确定为什么这会有所帮助。

这个问题会影响我拥有的每个数据库。

唯一的区别是我现在使用以下脚本从计划任务创建每日备份

BACKUP DATABASE DBName TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Backup\DBName .bak' 
WITH NOFORMAT, INIT,  NAME = N'DBName Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
Run Code Online (Sandbox Code Playgroud)

的结果

SELECT ORIGINAL_LOGIN(), USER_NAME(), SUSER_SNAME();
Run Code Online (Sandbox Code Playgroud)

显示

在此处输入图片说明

sql-server sql-server-2017

6
推荐指数
1
解决办法
5678
查看次数

外键应该放在哪个表上

我正在学习数据库。在我非常简单的数据库中,我有 2 个表。

WorkingHoursDetail

ID
NameOfWeek
Hours
Run Code Online (Sandbox Code Playgroud)

和

WorkingHours

ID
Name
Run Code Online (Sandbox Code Playgroud)

如您所见,它们目前没有关联。

现在,我面临着将它们联系起来的问题。我知道我通过添加一个外键来做到这一点,比如 MyOtherTableID 并将其链接到其他表 ID。

在上面的示例中,我可以向 EITHER 添加外键

WorkingHoursDetail

ID
NameOfWeek
Hours
WorkingHoursId
Run Code Online (Sandbox Code Playgroud)

和

WorkingHours

ID
Name
Run Code Online (Sandbox Code Playgroud)

或者

WorkingHoursDetail

ID
NameOfWeek
Hours
Run Code Online (Sandbox Code Playgroud)

和

WorkingHours

ID
Name
WorkingHoursDetailId
Run Code Online (Sandbox Code Playgroud)

我试过这个,它似乎有效,但是这个选项让我害怕。是否有一个“正确”的答案,或者这种变化只会影响数据写入数据库的顺序。如果是这种情况,那么这肯定会决定使用它的程序的流程(用户 GUI)。

sql-server

3
推荐指数
1
解决办法
5911
查看次数

标签 统计

sql-server ×2

sql-server-2017 ×1