我有一个名为“1098Statement”的视图的数据库我们正在测试用户名为“appuser”的应用程序。
我尝试了以下解决方案来在视图上授予选择权并不断出错:
将用户添加到已在视图上授予选择权的数据库角色
消息 229,级别 14,状态 5,第 2 行 对象“1098Statement”、数据库“mydb”、架构“dbo”的 SELECT 权限被拒绝。
他们都没有工作。
是否有任何人可以提供有关解决此问题的任何指示。
我唯一剩下的想法是检查
获得多个聚合结果值的最佳或最有效方法是什么?
基本上,我有一个电子邮件应用程序,想要获取每种类型的文件夹(收件箱、已发送、已存档、已标记...)的所有邮件数量,如下定义。
这是我在一个存储过程调用中尝试做的事情的示例。(其中 [uid] 是用户 ID)
SELECT * FROM Message
Inbox WHERE [to] = [uid]
Unread WHERE [to] = [uid] and isread = 0
Flagged WHERE [to] = [uid] and isFlagged = 1
Drafts WHERE [to] = [uid] and isDraft = 1
Sent Messages WHERE [from] = [uid]
Archived Messages WHERE [to] = [uid] and isArchived = 1
Run Code Online (Sandbox Code Playgroud) 我有一个电子邮件类型的应用程序,想为用户选择所有消息(收件箱)。问题是我将电子邮件的标题部分规范化到数据库中,这样平面数据就会进入消息表,而从、到、抄送、密件抄送则存储到另一个表中。
根据 PK/ FK 关系。
我非常重视的一件事是 SQL 解决方案的效率,因为这将是多次执行的代码,并且可能是整个数据库中运行次数最多的 sql
这里的上下文是我的数据库模式的视图。

我们公司目前为每个 SQL Server 2005 实例托管大约 400 个数据库。500-600 个数据库,我们看到性能开始下降。数据库大小在极端情况下从 50mb 到 40-60gb 不等,平均可能只有几 GB。
有哪些好的指标需要收集,我们如何获取这些指标来确定我们的瓶颈?
SQL Server 数据库太多是不是性能限制?是数百个数据库的数百个存储过程的所有缓存过程计划吗?查询效率低吗?还是组合?
什么最有可能帮助我们增加每台服务器的数据库数量?所有模式都是相同的,并且数据库将每个客户的数据分开。也许重构一切以便我们可以将多个客户合并到一个数据库中并按客户过滤,或者将我们的查询优化到极致?或者它可能只是 SQL Server 的限制?
我们最近设置了一个运行 Windows Server 2008 的新虚拟机,并在其上安装了 SQL Server 2005 的副本。该服务器已经运行并顺利使用了大约两周。我们对它所做的唯一真正维护是移动数据库文件所在的分区(近一周前完成),我们运行了数据库引擎优化顾问,以查看昨天中午 12 点左右对新索引的一些建议。
下午 5 点刚过,软件像往常一样使用时,有人通知我该程序似乎不再正常工作。我检查了数据库,不仅特定于他使用该程序的数据消失了,而且每张大约五十张表的表格似乎都被抹去了所有记录。
在与应用程序开发人员进行了长时间的交谈之后,很明显这不是他们软件的远程可能的功能。
在争先恐后地恢复原状的过程中,我们通过重新启动之间的运行副本克隆了 VM 的备份,从那以后它已经运行了大约一天的时间。因此,我们没有导致问题本身的事件日志。
你以前见过这样的事情吗?(数据库的所有表中的所有记录都......消失了。)有没有人有一个合理的理论来说明这种情况是如何发生的,如果有什么是合理的预防措施呢?
我在一家小公司(3 个用户)有一台 Linux 服务器,它充当域服务器并在 VMware 下运行两台虚拟机:一台装有 SQL Server 2000,另一台装有 SQL Server 2005,每种情况都在 Win2k 上运行。每个 SQL Server 都有几个小而重要的数据库。
据我所知,Linux 服务器的一生都非常无聊。它有 2GB 的内存,但即使使用虚拟机,它的内存使用量也不会超过 512MB,其余的都分配给缓存。
但是虚拟机性能很糟糕!数据库比我从专用(但古老的)机器上移动它们之前要慢。如果有一段时间没有使用数据库,您可以在它再次开始响应之前喝杯咖啡。
我可以做些什么来提高性能?
sql-server-2005 sql-server linux sql-server-2000 virtualisation
假设我有一张foo类似于:
ident int, primaryKey, auto_increment
someNumber int
statusId int
...
Run Code Online (Sandbox Code Playgroud)
someNumber除少数特殊情况外,其中该列等于ident。(在那些特殊情况下,someNumber总是等于前一个ident)。
我看到了一些问题,这些问题看起来像这样的查询SELECT TOP 10 ident, someNumber FROM foo WHERE statusId=@desiredStatusId ORDER BY someNumber会返回错误的 10 条记录。记录都有正确的 statusId,但随机有一个不正确someNumber。例如:
ident someNumber
------- ----------
1234567 1234567
1234700 1234700
1234568 1234568
1234569 1234569
1234570 1234570
... ...
Run Code Online (Sandbox Code Playgroud)
什么可能导致此查询间歇性地返回错误结果?
我们已经完成了 4 节点 SQL Server 2005 集群的设置。我们使用 Windows 2008 R2 作为底层操作系统。
我们正在寻找关于我们可以执行的一组测试的建议来测试 SQL 实例的故障转移?
我们使用的是 SQL Server 2005。在我们的数据库中,一些行被删除;如何找到系统(主机名/IP 地址)、程序以及删除日期和时间?
我刚刚在我的服务器 (2005) 中添加了一个“新”数据库,我已经从死机的 SQL2000 服务器恢复到我的活动服务器 (2005),并将兼容性更改为 90 (SQL Server 2005)。我的平均 CPU 在 1600 上的连接率为 48%,在从我这边恢复数据库并更改连接字符串以便站点可以与活动服务器一起工作之后,地狱已经松动,我的连接保持在平均水平。1600 但我的 CPU 飙升至平均水平。70%。我想好吧,我有一些调整问题,所以我重建了所有索引,并在“新”数据库上启动了一个探查器,但可惜我在平均上错了。小时有 100 次 SP 运行,所有这些运行的 CPU 都小于 50 毫秒,最高读取次数为 2.2k(无写入,持续时间最长为 1 秒,最长持续时间为 3 秒)。
我很想知道下一步应该检查什么,SQL Server 端还是 Web 端。
sql-server-2005 ×10
sql-server ×5
performance ×2
aggregate ×1
clustering ×1
linux ×1
query ×1
security ×1
windows ×1