标签: sql-server-2005

在预订系统中保持参照完整性

我正在 Microsoft SQL Server 2005 上开发企业培训预订系统的第二个版本。

我有 3 个表(针对这个问题进行了简化)。

表 1 - CourseSize- 这决定了能够预订会话的最大参与者数量。
表 2 - 课程 - 要提供的课程、日期/时间和对 CourseSize 记录的引用。
表 3 - 预订- 参考相关会话记录进行预订的人。

SQL如下-

CREATE TABLE [dbo].[CourseSize]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CourseSizeMax] [tinyint] NOT NULL,
    CONSTRAINT [PK_CourseSize] PRIMARY KEY CLUSTERED ([ID] ASC)
);

CREATE TABLE [dbo].[Session]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CourseSizeID] [int] NOT NULL,
    CONSTRAINT [PK_Session] PRIMARY KEY CLUSTERED ([ID] ASC)
);
GO

ALTER TABLE [dbo].[Session] WITH CHECK …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 database-design constraint

5
推荐指数
2
解决办法
1112
查看次数

如何编写正确的查询来加入所有这些表而没有重复?

假设我有四个表:

TABLE:    players
COLUMNS:  id, first_name, last_name

TABLE:    passing_stats
COLUMNS:  id, year, passing_yards (several other passing columns)

TABLE:    rushing_stats
COLUMNS:  id, year, rushing_yards (several other rushing columns)

TABLE:    receiving_stats
COLUMNS:  id, year, receiving_yards (several other receiving columns)
Run Code Online (Sandbox Code Playgroud)

假设 Michael Vick 的 id 为 100。我想得到他的全名和他每年的所有统计数据(传球、冲球和接球)。

我不想要任何重复,这意味着 2011 年的快速统计数据应该与 2011 年的传递统计数据出现在同一行。

编写此查询的最优雅方式是什么?谢谢。

mysql postgresql sql-server-2005 sql-server-2008

5
推荐指数
2
解决办法
2658
查看次数

自动增长和合并复制

我们正在将合并复制与 SQL 2005 一起使用。似乎我需要更改发布服务器上的自动增长设置,但我想知道这对复制有什么影响。

它会强制初始化吗?还有什么我需要注意的吗?

replication sql-server-2005 sql-server

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

SQL Server 低于 5000 个可用页面

我在生产中的两个 SQL Server 2005 实例上设置了警报。只要Free Pages性能计数器低于 5000 页标记,就会发送这些警报之一。

两台服务器通常都有超过 300000 个空闲页面,但有时其中一台服务器会暂时远远低于 2000 甚至 1000 个空闲页面,然后再次上升。同样,这只发生在其中一台服务器上。

据我所知,这种行为不会降低该服务器的性能,因为在我看来,每当服务器在空闲页面上耗尽时,它都会从缓冲区中释放旧数据页面并填充空闲缓冲区列表. 至少从理论上讲。

我不明白的是,为什么惰性写入器没有维护更大的空闲缓冲区列表,而是“等待”SQL Server 在释放更多缓冲区之前在空闲页面上变得如此短缺。

所以我的问题实际上是双重的:
1. 我如何确定是什么/谁导致 SQL Server 空闲页面不足?
2.如何检查什么是真正回事?

sql-server-2005 sql-server memory

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

“从数据库”还原是从数据库的最新备份还是实际的实时数据库还原?

在 SSMS 2005 中,我想使用 GUI 通过恢复到新数据库来复制数据库。我正在使用“来自数据库”单选按钮作为源,但最近列表中的数据库消失了。我阅读了 sql server 文档,它说只有记录为有备份的数据库才会显示在此列表中。文档中没有任何内容说明此备份是否为实际数据源。

当我在源选项中选择“来自数据库”时,它是从数据库的最新备份中提取还是从实际的实时数据库中提取?

sql-server-2005 sql-server ssms

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

SQL Server 2008 多页分配

当查询或存储过程的执行计划大于 8000 字节时,它将使用 MPA(多页分配器),而不是使用缓冲池中的计划缓存,它使用缓冲池外的内存。此行为在 SQL 2012 中有所更改,并且 MPA 和 SPA 是缓冲池的一部分。但我使用的是 SQL 2008 R2 标准版。

多页分配是否意味着将一次分配两个或更多 8K 页或将分配大小大于 8K 的页以保存查询的执行计划?

sql-server-2005 sql-server-2008 sql-server

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

索引碎片整理需要永远运行

我们有一个代理工作,每天早上 2 点运行。对前 5 个最大的表进行碎片整理。通常需要大约 20 分钟才能完成。多年来,它一直保持这种状态。但是,最近(上周左右)我注意到它花费的时间要长得多(2-7 小时)。今天早上,我不得不终止这项工作,因为它已经运行了 8 个半小时。

我查看了它的日志,看起来在我取消作业时它甚至还没有完成第一个表中的索引:

Job '02.00 am - Index defrag' : Step 1, 'run index defrag' : Began Executing 2012-06-27 02:00:05

DBCC: Defrag phase of index 'table1_pk_index' is 27% complete. [SQLSTATE 01000]
DBCC: Defrag phase of index 'table1_pk_index' is 27% complete. [SQLSTATE 01000]
DBCC: Defrag phase of index 'table1_pk_index' is 27% complete. [SQLSTATE 01000]
DBCC: Defrag phase of index 'table1_pk_index' is 27% complete. [SQLSTATE 01000]
DBCC: Defrag phase of index 'table1_pk_index' is 28% …
Run Code Online (Sandbox Code Playgroud)

index sql-server-2005

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

架构和用户权限

我有 2 个模式,比如说sch1sch2。每个拥有不同的用户。

我确实想将sch2.MyTable(但只是这个对象)的SELECT权限授予sch1过程/视图,并允许在sch1外键约束中引用sch2.MyTable

我不想做sch2.MyTable直接访问这些,谁使用SCH2程序/意见,但要允许间接访问。

基本上 sch2 更重要。sch2 的所有者也可以控制 sch1,但反之则不然。另一方面,sch1 有一些依赖于 sch2 的数据,他们应该能够看到它们并且不允许从 sch2 中删除数据,而 sch1 仍然对它们有一些依赖。

这可能吗(也许通过同义词)?

不,似乎-不,不可能。除非去掉关于“视图和约束”或“不同模式所有者”的部分。

sql-server-2005 sql-server-2008 sql-server

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

如何在 SQL Server 2005 中为对象名称(表名称)禁用区分大小写?

我在 SQL Server 2005 中创建了一个新数据库并从旧数据库执行生成的脚本。

因为我有一张桌子叫 MstCity

当我尝试执行以下表名大写的查询时 MSTCITY

SELECT City FROM MSTCITY WHERE City = 'Junagadh'
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

无效的对象名称“MSTCITY”

当我执行此SELECT语句时,它工作正常

SELECT City FROM MstCity WHERE City = 'Junagadh'
Run Code Online (Sandbox Code Playgroud)

在旧数据库中,这两个SELECT语句都可以正常工作。并且这两个数据库都只在 SQL Server 2005 中。

sql-server-2005

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

从 SQL Server 2005 sp2 升级到 SQL Server 2005 sp4 失败

SQL Server Standard 2005 sp2 32bit 在 Windows 2003 Standard 32bit Service Pack 2 上运行。

我尝试使用SQLServer2005SP4-KB2463332-x86-ENU.exe将服务包从 sp2 升级到 sp4并收到以下错误:

Property(S): UpgradeInstruction = Connect to SQL instance MYSERVER as sysadmin
Launch SQL statement USE master
Launch script file d:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install\sysdbupg.sql
Launch script file d:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install\DbEngine_hotfix_install.sql
Launch script file d:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install\repl_hotfix_install.sql
Stop service MSSQLSERVER
Property(S): SqlUpgradeMessage = SQL Server Setup failed to parse the SQL script "d:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install\DbEngine_hotfix_install.sql". The error code is …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 service-pack

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