测试当前在单用户负载下的应用程序 - 随着测试数据增加到生产大小(每个表 400k-2M 行),一些 SELECT sp 的速度不再足够快(测试数据有限,每个过去 <30 毫秒,现在是 100-200 毫秒,但有几个,所以延迟在 UI 中变得明显)。
我在一家小公司(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
我必须在 sql server 2000 环境中对我们的一个数据库进行数据库清理。清理主要包括禁用所有触发器、删除所有旧数据、启用触发器和收缩事务日志。
目前我遇到的最大问题是禁用触发器。这在 sql 2005 / 2008 中会非常容易,因为它们包含“禁用所有触发器”命令。我有一个查询来列出所有触发器,尽管它没有列出触发器的状态(这将是一个奖励)
SELECT S2.[name] TableName, S1.[name] TriggerName, CASE WHEN S2.deltrig = s1.id THEN 'Delete' WHEN S2.instrig = s1.id THEN 'Insert' WHEN S2.updtrig = s1.id THEN 'Update' END 'TriggerType' , 'S1',s1.*,'S2',s2.* FROM sysobjects S1 JOIN sysobjects S2 ON S1.parent_obj = S2.[id] WHERE S1.xtype='TR'
Run Code Online (Sandbox Code Playgroud)
对于每个表,记录的删除将是一个简单的删除,这可能不是最有效的方法,而是规定的方法。
Shrinking the Transaction Log 也是排序的,我在 Microsoft 支持站点上找到了一篇关于使用 DBCC 的文章
任何建议将不胜感激
我们多年来一直在运行 SQL Server 2000。
最后,我们终于交付了 SQL 2008 Server。
我们的 SQL 2000 Server 上有许多 DTS 作业需要迁移到 SQL 2008 Server。
我在哪里可以查找如何转换 DTS 作业以便它们可以在 SQL 2008 上运行?
我是一名 WinForms C# 开发人员,负责调用、构建存储过程并偶尔为我们的 SQL Server 创建新表,但我不是数据库管理员或网络管理员。
我想确保我这样做是正确的,以便我们公司的停机时间最少。
来自我们的网络管理员:
根据我的阅读,我将不得不做更多的研究,我们必须将所有数据转换服务 (DTS) 包转换为 SQL Server 集成服务 (SSIS)。我不知道这可能会带来什么,但根据我的理解,这些工作是用 .Net 编写的。如果我们可以迁移它们,那很好,但如果不能,我们可能必须为所有人编写新的,一旦你编写了第一个,这不会那么难。
这有帮助吗?
我有一个旧的数据库服务器。写它的人早已不在了。根本没有文档,只有代码中的一些注释。幸运的是,这并不复杂,但如果我想修复它(来自用户的请求),调查所有相关的数据库对象(表、视图或存储过程)需要时间。
最近,我收到我们 IT 部门人员的建议,我应该将我们的数据库升级到更新的数据库版本 (2005/2008)。现在,它是 SQL Server 2000。他说它将有更好的性能和安全性。我想如果我升级到新版本,我们的旧机器(硬件)可能不足以支持新的数据库引擎。目前,据用户称,响应时间是可以接受的。
我试着去思考所有的利弊。我宁愿不升级,但我想确保我不会错过任何东西。
不升级
升级
问题是:我该怎么办?升级或不升级我们的数据库服务器。
我的任务是执行 SQL Server 2000 到 2005 的迁移。我将进行并行迁移。我从几个不同的来源阅读,我可以:
在 SQL Server 2000 上执行数据库备份,将该备份传送到新硬件并在 SQL Server 2005 中恢复数据库;或者
分离 SQL Server 2000 上的数据库,将数据和日志文件复制到新硬件并附加 SQL Server 2005 中的文件。
这些方法有区别吗?哪个最安全?
我已经完成了使用升级顾问检查数据库的升级前任务,并且在迁移之前我没有要解决的警告。
任何意见都会很受欢迎。
我想从其他服务器检索表值
询问
EXEC sp_addlinkedserver @server = 'OPSERVER', @srvproduct = 'SQL Server'
EXEC sp_addlinkedsrvlogin @rmtsrvname = 'OPSERVER', @rmtuser = 'SA', @rmtpassword = 'SA'
SELECT * FROM OPSERVER.VENUS.dbo.TABL1
Run Code Online (Sandbox Code Playgroud)
上面的查询显示错误,因为用户“SA”登录失败
查询
EXEC sp_addlinkedserver @server = 'OPSERVER', @srvproduct = 'SQL Server'
sp_addlinkedsrvlogin
@rmtsrvname = 'OPSERVER',
@locallogin = 'sa',
@rmtuser = 'sa',
@rmtpassword = 'sa'
SELECT * FROM OPSERVER.VENUS.dbo.TABLE1
Showing error as "Login failed for user 'sa'"
Run Code Online (Sandbox Code Playgroud)
我的查询有什么问题。
我有一个简单的查询和表,我想知道哪种索引对这种表和查询是有效的。
在我的表中,我有 3 列
CREATE TABLE mYTable(ipFrom BIGINT, ipto BIGINT, url NVARCHAR(255))
Run Code Online (Sandbox Code Playgroud)
我正在运行这个简单的查询。
SELECT url
FROM MyTable
WHERE ipto <= somevalue AND ipfrom >= somevalue
Run Code Online (Sandbox Code Playgroud)
我还在所有 3 列上创建了索引,这些列聚集在 ipFrom 上,其余 2 列上没有聚集。但是这个查询在 CPU 和读取方面给我带来了非常糟糕的性能。
有什么建议。
我实施的是我喜欢根据 IP 地址重定向用户。我存储了来自不同地区和州的多个 IP 范围,并根据用户的 IP 将用户重定向到适当的 URL。
是的,我认为我在两列中以错误的方式插入了数据(稍后会重命名列),但这里的重点是最小化 CPU。
当我查看那里的执行计划时,它会在 where 子句中转换数据,我不知道它为什么要在 where 子句中转换数据。有这样的事情
|--聚簇索引查找(OBJECT:([T].[TC]), SEEK:([T].[C] > Convert([@V])
我有一个查询返回类似的内容:
Name Gender Job date of hire
John M mechanic 2012-05-08
John M electrician 2010-01-01
Vicky F scientific 2012-11-11
Bob M NULL NULL
Run Code Online (Sandbox Code Playgroud)
我需要每个人的第一份工作的姓名、性别和工作名称。但我不知道怎么做。我的查询如下所示:
select name,gender,jobname,hiredate
from person p
left join job j on p.personid = j.personid
Run Code Online (Sandbox Code Playgroud)
我使用的是 Microsoft SQL Server 2000
我需要这个结果:
Name Gender Job
John M electrician
Vicky F scientific
Bob M NULL
Run Code Online (Sandbox Code Playgroud) 我有一个新的 SQL Server 2012 实例,并且正在从 SQL Server 2000 迁移数据库。数据库中的一些存储过程我正在移动引用另一个数据库回到该 2000 服务器上。处理这个问题的最佳方法是什么?
链接服务器会有帮助吗?我在创建测试链接时遇到问题。有些人推荐使用 ODBC,其他人似乎使用 SQL Server 10 客户端驱动程序 (SQLNCLI10)。使用 SQL Server 10 客户端驱动程序对我来说似乎更好,在 SQL Server 2012 实例上安装它有问题吗?
sql-server-2000 ×10
sql-server ×6
group-by ×1
index ×1
linux ×1
migration ×1
performance ×1
ssis ×1
upgrade ×1