我正在 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) 假设我有四个表:
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 年的传递统计数据出现在同一行。
编写此查询的最优雅方式是什么?谢谢。
我们正在将合并复制与 SQL 2005 一起使用。似乎我需要更改发布服务器上的自动增长设置,但我想知道这对复制有什么影响。
它会强制初始化吗?还有什么我需要注意的吗?
我在生产中的两个 SQL Server 2005 实例上设置了警报。只要Free Pages性能计数器低于 5000 页标记,就会发送这些警报之一。
两台服务器通常都有超过 300000 个空闲页面,但有时其中一台服务器会暂时远远低于 2000 甚至 1000 个空闲页面,然后再次上升。同样,这只发生在其中一台服务器上。
据我所知,这种行为不会降低该服务器的性能,因为在我看来,每当服务器在空闲页面上耗尽时,它都会从缓冲区中释放旧数据页面并填充空闲缓冲区列表. 至少从理论上讲。
我不明白的是,为什么惰性写入器没有维护更大的空闲缓冲区列表,而是“等待”SQL Server 在释放更多缓冲区之前在空闲页面上变得如此短缺。
所以我的问题实际上是双重的:
1. 我如何确定是什么/谁导致 SQL Server 空闲页面不足?
2.如何检查什么是真正回事?
在 SSMS 2005 中,我想使用 GUI 通过恢复到新数据库来复制数据库。我正在使用“来自数据库”单选按钮作为源,但最近列表中的数据库消失了。我阅读了 sql server 文档,它说只有记录为有备份的数据库才会显示在此列表中。文档中没有任何内容说明此备份是否为实际数据源。
当我在源选项中选择“来自数据库”时,它是从数据库的最新备份中提取还是从实际的实时数据库中提取?
当查询或存储过程的执行计划大于 8000 字节时,它将使用 MPA(多页分配器),而不是使用缓冲池中的计划缓存,它使用缓冲池外的内存。此行为在 SQL 2012 中有所更改,并且 MPA 和 SPA 是缓冲池的一部分。但我使用的是 SQL 2008 R2 标准版。
多页分配是否意味着将一次分配两个或更多 8K 页或将分配大小大于 8K 的页以保存查询的执行计划?
我们有一个代理工作,每天早上 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) 我有 2 个模式,比如说sch1和sch2。每个拥有不同的用户。
我确实想将sch2.MyTable(但只是这个对象)的SELECT权限授予sch1过程/视图,并允许在sch1外键约束中引用sch2.MyTable。
我不想做sch2.MyTable直接访问这些,谁使用SCH2程序/意见,但要允许间接访问。
基本上 sch2 更重要。sch2 的所有者也可以控制 sch1,但反之则不然。另一方面,sch1 有一些依赖于 sch2 的数据,他们应该能够看到它们并且不允许从 sch2 中删除数据,而 sch1 仍然对它们有一些依赖。
这可能吗(也许通过同义词)?
不,似乎-不,不可能。除非去掉关于“视图和约束”或“不同模式所有者”的部分。
我在 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 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 ×10
sql-server ×5
constraint ×1
index ×1
memory ×1
mysql ×1
postgresql ×1
replication ×1
service-pack ×1
ssms ×1