标签: sql-server

为 SQL 用户设置对所有对象的权限

我有一个过程,它遍历数据库中的所有对象并为它们分配适当的权限给该对象。我想知道是否有更好的方法来做到这一点?我使用模型数据库来创建新数据库,因此每次创建新数据库时都必须运行它。这是它的外观的一个想法(注意:从一开始就丢失了一个块,它会删除所有用户并重新创建必要的用户;自从 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)

security database-design sql-server

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

实施数据库安全?

我想在我创建的数据库上实现数据库安全性,以便没有人可以从 SQL Server Management Studio 访问它,并且只能通过代码访问它。

那可能吗?如果不是,还有其他方法可以阻止用户访问数据库吗?

security sql-server

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

我可以简单地将事务日志从不受限制更改为受限制吗?

我有一个数据文件大小为 674 MB 的数据库和一个 6.1 GB 的事务日志。事务日志大约比数据文件大 10 倍。

事务日志设置可以在下图中看到。

在此处输入图片说明

服务器不断耗尽空间,此事务日志约占总磁盘空间的 11%。我想让这个事务日志文件更小。

我可以简单地通过切换到限制文件增长 [MB]: 并将大小设置为 80 MB 来更改“最大文件大小”吗?

sql-server

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

截断表后如何添加约束?

我正在写一个脚本。这个脚本的目的是

  1. 获取数据库上的所有外键约束。
  2. 截断一个表。
  3. 重新添加已删除的外键约束。

我在再次添加约束时遇到问题 [步骤 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”列中。

有什么办法可以解决这个问题并且无论如何都可以添加约束吗?

sql-server

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

当其中一个值的类型不同时,在复合键中使用的最佳类型

我正在为已抓取的多个博客站点的内容构建数据存储。这些站点中的每一个都将在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发布帖子的信息。发布频率的准确性在分钟级别。

问题是,我需要使用BlogIdPostId但我不确定我应该输入什么PostId。我一直在想两个选择:

  • sql_variant- 我可以int对我的大多数网站使用 an ,这很好,然后datetimeoffset用于那些我无法轻易辨别唯一数字的网站PostId
  • bigint …

sql-server-2008 database-design sql-server unique-constraint

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

将数据库附加到 SQL 服务器

我有以下错误

无法打开数据库“Test”,因为它的版本是 661。此服务器支持版本 655 及更早版本。不支持降级路径。

通常,当数据库是用 SQL Server 2008 R2 创建并用例如 SQL Server 2008 SP2 打开时会发生这种错误,但问题是我试图在支持版本 661 的 SQL Server 2008 R2 中打开它。所以有什么问题?

sql-server sql-server-2008-r2

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

将 .sql 文件读入数据库

我创建了一个 sql 数据库并用一些好的数据填充它。现在我试图将所有存储过程移到另一个数据库实例。我将整个源数据库(包括心爱的存储过程)导出到一个 .sql 文件中。现在我正在寻找一种方法来将该数据读入另一台计算机的 sql server 安装中。

到目前为止,我已经尝试通过 Visual Studio UI 查看提示,并使用 sqlcmd 和输入文件。将 sqlcmd 与 .sql 文件一起使用后,一些行受到影响,但它们没有显示在服务器资源管理器中。

sql-server-2005 sql-server

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

如何设置每日 SQL 服务器导出到 csv 文本文件?

我们将 100,000 多行从 SQL Server 2005 DB 导出到文本文件。我们有一个 web 脚本设置来读取所有行,然后写入文本文件,完成该脚本需要 5 多分钟。

我们如何将其设置为直接从 SQL 服务器导出到 csv 文件并每天安排?

sql-server export

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

SQL Server 数据库保持半独立

如果我没有使用所有正确的术语,但我有将自己与 SQL Server 分离的数据库,请原谅我。在 SQL Server Management Studio 中,数据库旁边将缺少加号,或者数据库将没有表。

现在解决这个问题很容易,只需分离并附加数据库,我们就可以备份并运行了。但这是什么原因呢?

sql-server-2005 sql-server ssms sql-server-2008-r2

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

SQL Server 2008 评估已过​​期

我有(不止一个实例)我对 SQL Server 2008 eval 的一些实验(为什么 eval --> 关于使用许可版本进行测试或短生命周期实验的残酷官僚主义),到期后我保存了虚拟图像,现在我想使用 DataCenter 许可证启动其中的一些,但此版本不允许我重新安装或升级过期的实例,并带有保留系统设置、用户、链接服务器等的选项......

我的问题:

  • 是否有一些版本的 SQL Server 2008(ms-whatever 没有给我答案)能够启动过期的 eval?

  • 是否有关于从文件中卸载和附加的评论?

  • (也许真的很愚蠢)是否可以通过使用命令行中的某些参数或第三个参数来卸载 eval 并安装 Datacenter。派对工具?

sql-server-2008 sql-server

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