ret*_*tif 3 sql-server sql-server-2014 master-system-database
我刚刚发现,该master数据库包含一些其他数据库的表和存储过程的重复项。
例如,我有一个SomeDB包含表的数据库justTable。出于某种原因,该表的副本master也在其中,但没有数据。
这怎么可能?我敢肯定,在创建这些表和过程时,我使用的是相应的数据库,而不是master. 它们都存在于这些数据库中(它们应该存在),只是还有一个副本master。
我使用 Microsoft SQL Server Management Studio 2014 和 Redgate 添加(源代码控制和东西)。
您是否使用通过 SSMS 运行的脚本创建了表?
是否有可能如果你没有USE [SomeDB]在脚本的顶部包含,而是将当前的数据库设置为 master?
所以这样做:
取而代之的是:
你可以看到,当一个特定的表是通过查看系统视图,如创建:
SELECT ObjectName = QUOTENAME(s.name) + '.' + QUOTENAME(o.name)
, o.create_date
FROM sys.objects o
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE o.type_desc = 'USER_TABLE';
Run Code Online (Sandbox Code Playgroud)
这可以帮助您了解创建这些表的位置/时间。
查询结果:
如果您真的需要证明这些来自哪里,您可能希望在服务器级别创建一个 DDL 触发器来捕获诸如CREATE TABLE等的事件,但这超出了本答案的范围。服务器级 DDL 触发器将允许您为未来事件捕获所有数据定义事件;即它无助于解决这些现有表的来源。
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |