我有一个过程,它遍历数据库中的所有对象并为它们分配适当的权限给该对象。我想知道是否有更好的方法来做到这一点?我使用模型数据库来创建新数据库,因此每次创建新数据库时都必须运行它。这是它的外观的一个想法(注意:从一开始就丢失了一个块,它会删除所有用户并重新创建必要的用户;自从 SID 更改后,这是必要的):
CREATE PROCEDURE usp_SetPermissions
AS
BEGIN
DECLARE @CurrentId INT
DECLARE @ObjectName NVARCHAR(128)
DECLARE @Message NVARCHAR(160)
DECLARE @Error INT
DECLARE @Sql NVARCHAR(256)
CREATE TABLE #tmpDbObjects
(
ID INT IDENTITY(1,1),
ObjectName NVARCHAR(128),
Completed BIT
)
INSERT #tmpDbObjects(ObjectName, Completed)
SELECT DISTINCT [Name], 0 As Completed
FROM sys.objects
WHERE [type] = 'U' AND is_ms_shipped <> 1
WHILE EXISTS (SELECT 1 FROM #tmpDbObjects)
BEGIN
-- Pick first uncompleted object
SELECT TOP 1 @CurrentId = ID,
@ObjectName = ObjectName
FROM #tmpDbObjects
-- Grant permissions …Run Code Online (Sandbox Code Playgroud) 我想在我创建的数据库上实现数据库安全性,以便没有人可以从 SQL Server Management Studio 访问它,并且只能通过代码访问它。
那可能吗?如果不是,还有其他方法可以阻止用户访问数据库吗?
我有一个数据文件大小为 674 MB 的数据库和一个 6.1 GB 的事务日志。事务日志大约比数据文件大 10 倍。
事务日志设置可以在下图中看到。

服务器不断耗尽空间,此事务日志约占总磁盘空间的 11%。我想让这个事务日志文件更小。
我可以简单地通过切换到限制文件增长 [MB]: 并将大小设置为 80 MB 来更改“最大文件大小”吗?
我正在写一个脚本。这个脚本的目的是
我在再次添加约束时遇到问题 [步骤 3],我相信这是因为我的约束与可用的约束冲突。最初的数据是...
作者表
1 Kenneth Graham k.graham@twitw.com
Run Code Online (Sandbox Code Playgroud)
书桌
1 The wind in the willows Classic childrens story about woodland animals 123456
Run Code Online (Sandbox Code Playgroud)
作者书籍表
1 1 1
Run Code Online (Sandbox Code Playgroud)
我对 authorbooks 表有以下限制:
ALTER TABLE [dbo].[AuthorBooks] WITH CHECK ADD CONSTRAINT [FK_Books_Author_xref_Books] FOREIGN KEY([BookId])
REFERENCES [dbo].[Books] ([ID])
GO
ALTER TABLE [dbo].[AuthorBooks] WITH CHECK ADD CONSTRAINT [FK_Books_Author_xref_Authors] FOREIGN KEY([AuthorId])
REFERENCES [dbo].[Authors] ([Id])
GO
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试添加约束时,出现以下错误:
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_Books_Author_xref_Authors”冲突。冲突发生在数据库“PeteDb”、表“dbo.Authors”、“Id”列中。
有什么办法可以解决这个问题并且无论如何都可以添加约束吗?
我正在为已抓取的多个博客站点的内容构建数据存储。这些站点中的每一个都将在Blog表中包含一个条目
BlogId Url Version
int, PK, identity varchar(2500), not null int, not null
----------------- ----------------------- -------------
1 'http://site1.com/ 1
2 'http://site2.com/ 1
3 'http://site2.com/ 2
Run Code Online (Sandbox Code Playgroud)
然后会有一张Post表:
BlogId Url PostId
int, FK, not null varchar(2500) not null ?
Run Code Online (Sandbox Code Playgroud)
对于我正在查看的大多数博客,我可以轻松辨别出 PostId对它们来说独一无二价值。
对于所有博客,Url将是唯一的BlogId值。但是,Url是经常可能发生变化。
但是,有一些博客PostId在抓取 HTML 时我无法辨别出很好的价值。在这些情况下,我可以得到datetimeoffset发布帖子的信息。发布频率的准确性在分钟级别。
问题是,我需要使用BlogId和PostId但我不确定我应该输入什么PostId。我一直在想两个选择:
sql_variant- 我可以int对我的大多数网站使用 an ,这很好,然后datetimeoffset用于那些我无法轻易辨别唯一数字的网站PostIdbigint …sql-server-2008 database-design sql-server unique-constraint
我有以下错误
无法打开数据库“Test”,因为它的版本是 661。此服务器支持版本 655 及更早版本。不支持降级路径。
通常,当数据库是用 SQL Server 2008 R2 创建并用例如 SQL Server 2008 SP2 打开时会发生这种错误,但问题是我试图在支持版本 661 的 SQL Server 2008 R2 中打开它。所以有什么问题?
我创建了一个 sql 数据库并用一些好的数据填充它。现在我试图将所有存储过程移到另一个数据库实例。我将整个源数据库(包括心爱的存储过程)导出到一个 .sql 文件中。现在我正在寻找一种方法来将该数据读入另一台计算机的 sql server 安装中。
到目前为止,我已经尝试通过 Visual Studio UI 查看提示,并使用 sqlcmd 和输入文件。将 sqlcmd 与 .sql 文件一起使用后,一些行受到影响,但它们没有显示在服务器资源管理器中。
我们将 100,000 多行从 SQL Server 2005 DB 导出到文本文件。我们有一个 web 脚本设置来读取所有行,然后写入文本文件,完成该脚本需要 5 多分钟。
我们如何将其设置为直接从 SQL 服务器导出到 csv 文件并每天安排?
如果我没有使用所有正确的术语,但我有将自己与 SQL Server 分离的数据库,请原谅我。在 SQL Server Management Studio 中,数据库旁边将缺少加号,或者数据库将没有表。
现在解决这个问题很容易,只需分离并附加数据库,我们就可以备份并运行了。但这是什么原因呢?
我有(不止一个实例)我对 SQL Server 2008 eval 的一些实验(为什么 eval --> 关于使用许可版本进行测试或短生命周期实验的残酷官僚主义),到期后我保存了虚拟图像,现在我想使用 DataCenter 许可证启动其中的一些,但此版本不允许我重新安装或升级过期的实例,并带有保留系统设置、用户、链接服务器等的选项......
我的问题:
是否有一些版本的 SQL Server 2008(ms-whatever 没有给我答案)能够启动过期的 eval?
是否有关于从文件中卸载和附加的评论?
(也许真的很愚蠢)是否可以通过使用命令行中的某些参数或第三个参数来卸载 eval 并安装 Datacenter。派对工具?