小编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