我有 2 个模式,比如说sch1和sch2。每个拥有不同的用户。
我确实想将sch2.MyTable(但只是这个对象)的SELECT权限授予sch1过程/视图,并允许在sch1外键约束中引用sch2.MyTable。
我不想做sch2.MyTable直接访问这些,谁使用SCH2程序/意见,但要允许间接访问。
基本上 sch2 更重要。sch2 的所有者也可以控制 sch1,但反之则不然。另一方面,sch1 有一些依赖于 sch2 的数据,他们应该能够看到它们并且不允许从 sch2 中删除数据,而 sch1 仍然对它们有一些依赖。
这可能吗(也许通过同义词)?
不,似乎-不,不可能。除非去掉关于“视图和约束”或“不同模式所有者”的部分。
我在将数据导入 SQL Server 2008 数据库时遇到问题。
如果我在 SSMS 中执行以下语句,它工作正常。
INSERT INTO
[dbo].[ObjectiveRatingTranslation]
(
[ObjectiveRatingId]
, [TranslationId]
, [Abbreviation]
, [RateName]
, [Description]
, [CreatedBy]
, [CreatedOn]
, [ModifiedBy]
, [ModifiedOn]
)
VALUES
(
3
, 29
, N'O / T'
, N'På målet'
, N'Målet har slutförts i enlighet med detta förväntningar. Uppfyller de slutprodukter som definieras. Det förväntas att de flesta mål bör vara Topplista på denna nivå.'
, 0
, '2012-03-27T11:49:43.2300000'
, 0
, '2012-03-27T11:49:43.2300000'
)
Run Code Online (Sandbox Code Playgroud)
如果我在 VS 2010 …
一位数据库开发人员认为我们遇到了内存问题。他发现一些标准查询的运行时间有所增加——从不到 10 秒增加到大约两分半钟。他查看了服务器上的任务管理器,发现内存使用率很高,现在想要获取一些当前分配给操作系统的内存并将其释放给 SQL Server。
我们使用的是 SQL Server 2008,64 位机器,未启用 AWE,最小 4096 MB,最大 10240 MB。
我发现 Brent Ozar 的A Sysadmin's Guide to Microsoft SQL Server Memory表明任务管理器不可靠。我还发现我们的页面预期寿命并不表示内存压力。(通过Pinal Dave 的查询检查。)
我还应该看哪里?我还应该检查什么?我想向数据库开发人员报告以确认他的怀疑或证明他们不正确。
编辑:修改了我的实际问题。我欣赏并同意,由于内存问题以外的原因,这些查询很可能会变慢。然而,我处于一种情况,我需要证明内存不是全面的罪魁祸首。也就是说,证明少数查询由于其他原因而变慢并不能完成我的任务。我想了解我可以从哪里获得此类信息以及我应该检查哪些指标。
想象以下假设的数据库结构。基本上它是一个自上而下的结构(国家有订单,订单有订单线,订单线有发货线等......)。

我想按 CountryID 对我的 SQL Server 2008 数据库进行分区。如您所见,CountryID 仅在前 2 个表中(例如 amCountries 和 amOrders)。鉴于(据我所知)分区是在表级别完成的,我是否需要将 CountryID 添加到其余表中才能对它们进行分区?或者在 SQL Server 中是否有某种类型的级联可以让我跳过将 CountryID 添加到所有内容?
在 SQL Server 中,如果 Database Restore Time 与 Index Rebuilds OR Reorganize 相比花费的时间更少。我们可以选择恢复作为去碎片化的选项吗?如果它不是 24/7 的数据库。
我正在运行 SQL Server 2008 并且需要备份我创建的 UDF 脚本/查询。如何才能及时做到这一点?我尝试右键单击保存 UDF 的文件夹图标(表值函数)以复制文件夹,但不能打包到。
我唯一能想到的就是在我的 UDF 脚本上使用 MODIFY 命令,然后复制并粘贴到单独的文本文件中。
即使只有一种简单的方法可以将所有脚本保存在一个文本文件中而不是单独的 txt 文件中,我也很乐意这样做,而不必一次复制和粘贴每个文件。
有什么建议?
我正在重新创建(推送)从 SQL 2000 实例到 SQL 2008 实例的事务复制,为了进行数据库迁移,我必须中断该实例。2008 实例既是分发者又是订阅者。
我大约 1/2 的订阅失败了
找不到存储过程“sp_MSins_dboTABLE”。
(更多信息):
命令尝试:如果@@trancount > 0 rollback tran(事务序列号:0x0002A2B400008D19000100000000,命令ID:20)
错误消息:找不到存储过程“sp_MSins_dboTABLE”。(来源:MSSQLServer,错误号:2812) 获取帮助:找不到存储过程“sp_MSins_dboTABLE”。(来源:MSSQLServer,错误号:2812) 获取帮助:我已经找到了几乎所有我能找到的路径,从运行
sp_scriptpublicationcustomprocs(我在distribution数据库中执行结果)到删除订阅,然后是发布,然后重新创建他们。
工作订阅是使用相同的方法创建的。
这是我的创建脚本:
https://gist.github.com/3152160
编辑:
更新 --- 我失败的订阅也引发了以下错误(通过 Profiler):
表已经定义了一个主键。
我有另一个数据库 Ydb 访问数据库 Kdb 中的数据。他们都有相同的所有者。
为了允许跨数据库链接,我似乎需要在 Kdb 中启用来宾用户。
我是这样做的:
USE [master];
GO
ALTER DATABASE Ydb SET DB_CHAINING ON;
ALTER DATABASE Kdb SET DB_CHAINING ON;
GO
USE [Kdb]
GO
GRANT CONNECT TO guest;
Run Code Online (Sandbox Code Playgroud)
我意识到这意味着由 Ydb 的所有者创建的 Ydb 中的存储过程可以在由同一登录名创建时自由访问 Kdb 中的对象。这会开启什么样的攻击?
我在恢复数据库时遇到问题。
我在一个文件夹中有许多转储文件,我尝试将它们一个一个地还原到数据库 xyz,执行一些更新操作并继续使用其他转储进行还原操作。在此还原操作期间,所有其他数据库都进入 In Recovery 状态。此外,数据库 xyz 也进入恢复状态,我的第二次转储的还原操作失败,提示“无法在 xyz 上实现独占锁定”。
我正在使用 SQL Server 2008 R2。
那么我该如何解决这个问题,请提出建议。
这是我的情况。
[distribution]数据库附加到这个新实例select * from sysservers (正确地)返回分发服务器仍然是集群上的第一个实例。如果我在发布者上运行以下内容(或者这甚至可能),它会多么糟糕?
sp_configure ‘allow updates’, 1
GO
RECONFIGURE WITH OVERRIDE
GO
update sysservers set datasource = 'server\instance' where srvname = 'repl_distributor';
GO
sp_configure ‘allow updates’, 0
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)
这是最好的方法,还是有其他方法可以改变分销商?
sql-server-2008 ×10
sql-server ×7
replication ×2
backup ×1
functions ×1
memory ×1
partitioning ×1
security ×1
ssis ×1