标签: sql-server

区分 INFORMATION_SCHEMA.COLUMNS 中的表和视图

我有一个从 INFORMATION_SCHEMA.COLUMNS 中选择信息的视图,它似乎同时提供了列和视图。有没有一种简单的方法可以判断哪些行是列,哪些是视图?我应该与 INFORMATION_SCHEMA.VIEWS 进行比较吗?我需要列和视图,我只想知道哪个是哪个。

sql-server

8
推荐指数
2
解决办法
8456
查看次数

无法删除 SQL Server 2008 R2 登录

几天前我创建了一个 SQL Server 登录名。现在我需要删除相同的内容。所以我进入了 SQL Server Management Studio => Security => Logins 并选择了我想删除的登录名。它显示一条信息性消息,内容为

删除服务器登录不会删除与登录关联的数据库用户。要完成此过程,请删除每个数据库中的用户。可能需要首先将模式的所有权转移给新用户。

忽略此消息,当我确认删除过程时,我收到一个致命错误,上面写着

登录 'iis_login' 删除失败。(Microsoft.SqlServer.Smo)

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)

此登录是 1 个作业的所有者。您必须先删除或重新分配这些作业,然后才能删除登录。(Microsoft SQL Server,错误:15170)

当登录名拥有作业(根据上面的消息)时,如何删除登录名。

问候,涅槃。

sql-server-2008 sql-server sql-server-2008-r2

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

优化 SQL Server 的最佳工具(不是查询,而是数据库本身)

有谁知道优化整个 SQL Server 数据库的最佳工具是什么?

我不是在谈论如何编写查询,而是在谈论如何管理数据库文件、索引、分页和碎片。

痛苦的真相
工具与 DBA 之间的永恒斗争仍然存在......但我只是想知道基础知识,直到产品增长,然后我可以雇用一个不生气的 DBA :--)

sql-server

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

带有全局标志的 DBCC TRACEON

在“需要帮助对 Sql Server 2005 死锁场景进行故障排除”的问题中,有人建议使用DBCC TRACEON (1204, -1)全局跟踪死锁。

当在 BOL 中阅读有关此命令时,它指出仅当用户或应用程序不在系统上同时运行语句时才应使用它。这是否意味着在启用此跟踪标志时我们必须处于单用户模式?此外,为什么需要它,遵循建议是否重要?(在始终运行的生产系统中似乎有点难以遵循。)

sql-server dbcc

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

按 LIKE 的匹配排序

我想知道如何实现 SQL 以获得按类似谓词的最佳匹配排序的结果。我在数据库中有 10 万篇文章,当用户按名称的一部分调用某些项目时。我想显示按查询的最佳匹配排序的结果。

我会试着用伪代码来描述

select 
*
from
articles
where item_nale like '%'+@user_input +'%'
order by "BEST MATCH"
Run Code Online (Sandbox Code Playgroud)

sql-server order-by pattern-matching

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

将 sql server 数据库设为只读的好处?

我正在使用一个报告数据库,它实际上是一个只读数据库。它是创建的数据,并在此数据库上生成和查看动态报告。

我正在考虑将此数据库设为只读。

关于只读数据库,我想问的一些问题是

  1. 只有数据是只读的吗?我们还能在这个数据库上创建索引或视图吗?
  2. 使用只读数据库有哪些性能优势?例如使用共享锁的 SELECT 查询等...
  3. 使用只读数据库有什么缺点吗?
  4. 在使用只读数据库时,是否有任何最佳实践可以遵循?

sql-server

8
推荐指数
2
解决办法
5242
查看次数

SQL Server 中的 B 树节点拆分策略用于单调递增值

考虑一个总是单调增加的值的 B 树索引,例如 IDENTITY 类型的列。使用传统的 B 树实现,每当节点已满时,它将被拆分 50%/50%,我们最终得到一个 B 树,其中(几乎)所有节点都只有 50% 已满。

我知道 Oracle 会发现值何时不断增加,在这些情况下,Oracle 会执行 90%/10% 的拆分。这样,(几乎)所有节点都将充满 90%,并且对于这些非常常见的情况,可以获得更好的页面利用率。

我无法在 SQL Server 中找到类似功能的文档。但是,我进行了两次实验,分别在索引中插入了 N 个随机整数和 N 个连续整数。前一种情况使用了更多的页面,后者。

SQL Server 是否提供类似的功能?如果是这样:你能指点我一些关于这个功能的文档吗?

更新: 通过下面提供的实验,似乎叶节点保持未分裂,内部节点分裂 50%/50%。这使得增加键上的 B 树比随机键上的更紧凑。然而,Oracle 的 90%/10% 方法甚至更好,我仍然在寻找一些官方文档来验证实验中看到的行为。

index sql-server fragmentation page-splits

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

删除表后缩小数据库?

我在 SQL Server 数据库中有一个包含 70 多万条记录的表,我删除了该表(一次性的事情)以释放磁盘空间,但看起来大小没有太大变化。我确实看到我可以将数据库缩小到最低限度。

这是这样做的方式吗?

上次我使用 SQL Server Management Studio 进行收缩时,花了几个小时才完成。有没有更快的方法?

在此处输入图片说明

sql-server shrink drop-table

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

在开发盒上为开发人员授予 SA 权限

尽管我们强烈抗议,但我们的管理层决定必须授予开发团队对开发服务器的“sa”权限。问题是我们,DB 支持组仍然负责维护这个盒子。

我们现在被委托为具有这些增强权限的开发团队制定一份注意事项列表的任务。

请添加到此列表中:

DO——将活动限制在正在开发的数据库中

不要 -

  • 更改任何 SQL 实例设置
  • sp_configure(包括 cmdshell)
  • 添加/更改/删除任何安全设置
  • 添加/更改/删除数据库对象
  • 添加/更改/删除服务器对象,如备份设备和链接服务器
  • 添加/更改/删除复制
  • 添加/更改/删除维护计划
  • 接触任何不属于您团队的数据库

任何指向可用于跟踪这些用户活动的工具的指针将不胜感激。

sql-server-2005 sql-server permissions

8
推荐指数
3
解决办法
1871
查看次数

如何在 SQL Server 中创建与非主键的关系?

我有一个用户表,它有两列一个名为 UserID 的主键和另一个名为 UserName 的列。

  • 用户 ID (int) PK
  • 用户名 (varchar(256)

它们都是独一无二的,但出于某些原因,我决定使用 UserName 作为其他表中的参考。因此,例如订单表通过 UserName 而不是 userid 引用了用户。

  • 订单号
  • 用户名

我想在引用 UserName 和 Users 表的所有表之间创建关系,以便获得 SQL Server 的级联更新/删除功能。

但是 SQL Server 不允许我在非主键列上创建关系。有什么方法可以在不更改用户表的情况下获得级联更新/删除功能,以便 UserName 是主键而不是 UserID?

foreign-key sql-server constraint

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