在 SQL Server 2008 R2 中,使用BulkCopy上传数千行数据会导致在同一张表上进行查询时出现问题吗?
特别是它会导致查询超时吗?
被查询的表有数百万行。
询问:
select * from aa;
Run Code Online (Sandbox Code Playgroud)
输出:
ID FirstName LastName City
-----------------------------------
29 Abcrdrr hai chennai
67 adf adsd adsf
1 John vinoth CITY
Run Code Online (Sandbox Code Playgroud)
我想显示lastname没有最后一个字符的列。我正在使用以下查询:
Declare @name as varchar(100);
select @name = city from aa
Select @name, left(@name, len(@name)-1) as AfterRemoveLastCharacter
Run Code Online (Sandbox Code Playgroud)
但输出只会出现在第一行
我有一个 SQL Server 数据库,其中包含两个表 -Acks和Logs.
这两个表在逻辑上是相关的,但不是关系数据库的方式。基本上,传入的每条消息都会保存在Log表中,如果我们的服务器确认了它,那么该确认就会存储在Ack表中。
我们每天存储大约 500 万个确认和 300 万个日志。我试图在每日边界上对这两个表进行分区,以便我们可以轻松地从表中删除旧分区,并提高查询性能。
我之前没有做过表分区,所以我一直在阅读一些在线教程,但是我被一件事困住了。我遵循的所有教程似乎都手动添加文件组并手动添加边界。
我希望 SQL Server 每天都以某种方式执行此操作,这就是我的问题所在。我需要它来为第二天创建新的文件组,例如每天 22:00。然后在 24:00 插入应该开始填满新的一天的分区。
谁能指出我如何实现这一目标的正确方向?综合教程或一些好的旧建议也可以。
我的第二个问题:我可以以某种方式将相同的分区函数应用于两个不同的表吗?
他们都有一个datetime(2)我想在其上分区的列,并且将应用相同的规则。
那如何适应我的文件组?我一天需要一个文件组吗?每个表在该文件组中都有一个文件,还是两个表都保存到文件组中的同一个文件中?
我是否必须为每个文件组创建一个.mdf和.ldf?还是整个数据库还有一个日志文件?
我正在查看 SQL Server 日志并遇到以下信息性消息。
自 2014 年 12 月 10 日 20:02:48 (UTC) 以来,此 SQL Server 实例一直使用进程 ID 1960。这只是一条信息性消息:不需要用户操作。
此消息是在过去三天内生成的。我无法使用活动监视器看到进程 ID。
这是否可能导致/突出我需要研究的问题?
我的三节点 SQL Server 2008 R2 物理服务器集群需要关闭,连同其存储一起移动到新位置,并在新位置重新启动一次。我的愿望是拥有一个干净、可控的关闭/启动序列,并且如果可能的话,在此过程中所有 SQL Server 实例都保留在其原始节点上。因此,如果SQLInstA打开NodeA、SQLInstB打开NodeB且NodeC为空,则在服务器关闭期间没有故障转移,我将在启动时单独启动服务。
我已经阅读了有关将 SQL Server 设置为离线、暂停节点、停止群集服务、将启动类型设置为手动的各种建议。
我首先想到的是设置SQLInstA和SQLInstB服务脱机故障转移群集管理器。离线不会触发故障转移,因此它们会保持原状。但是,无论我将它们设置为只有一个首选所有者,重新启动都会导致故障转移。即使我没有“禁用自动启动”,服务也不会重新启动,因此即使两个实例都在同一个节点上结束,服务也会在启动时关闭,这并不可怕。之后只需手动故障转移工作。
我可以停止集群服务,但这也会触发故障转移。在这种情况下停止集群服务重要吗?
关于如何实现这一点的任何想法?
我使用的是 SQL Server 2005,我需要将每个 SQL 代理作业保存在单个“创建于”*.sql 文件中。问题是我得到了大约 20 个 SQL Server,其中包含 15 个(最多 51 个)SQL 作业。
如何在单个文件中轻松导出这些作业?
如果我标记所有作业,它们将保存在一个文件中。手动将每个作业导出到文件需要很长时间。
有人有想法吗?
我有一个用户界面,允许用户选择他们想要过滤结果的某些数据点。有位置、部门等内容。一旦他们选择了所有选项,我就会生成一个 XML 字符串,并将其传递给我的存储过程。
从那里,例如,对于位置,我创建了一个临时表并将用户选择的所有位置转储到该表中,然后我稍后加入我的数据。
在运行执行计划时,我注意到解析过滤器数据的 5 个左右的查询中的每一个都花费了大约 12%,这超过了查询的 60%,只是为了确定我们将要过滤的数据。
DECLARE @tmLocations TABLE (
location VARCHAR (100));
BEGIN
INSERT INTO @tmLocations
SELECT ParamValues.x1.value('location[1]', 'VARCHAR(200)')
FROM @xml.nodes('data/teammateLocations/locations') AS ParamValues(x1);
END
Run Code Online (Sandbox Code Playgroud)
是否有另一种从 XML 中提取数据的方法或改进上述查询的方法,以便运行成本不高?设置数据比实际过滤数据的成本更高,这确实会降低性能。
sql-server-2008 sql-server stored-procedures t-sql execution-plan
我们正在运行 SQL Server 2008 R2。
我正在使用 SPBlitz,它说我在驱动器 H 上的存储写入速度很慢。 Blitz 将这些定义为“平均超过 20 毫秒”。
但当然,有人问:“超过多少?”
是否可以使用查询来确定以毫秒为单位的平均存储写入量?
谢谢,嗯
上周我遇到了一个问题,我们在 SQL Server 中重命名了一堆表,但它破坏了一堆触发器。我本来希望 SQL Server Mgmt Studio 足够聪明来更新这些触发器,但显然不是。是我期待太多了吗?有没有办法检测触发器引用不再存在的表(或列)的这些问题?
我们是一家小商店,从任何想象来看我都不是 DBA,但我最近继承了一个较大的旧数据库(至少从 04 年开始运行),在过去的一个月里,它经历了慢一点。它从我们更复杂的查询开始,但甚至开始影响更简单的查询。
在我同事离开之前,他已经将实例从 2008(标准)升级到 2014(企业)。这些文件也在数据库上缩小了,(我现在知道这是不赞成的。)但是,我相信实例在升级和缩小后直接运行良好。
我们有两个使用 AlwaysOn 设置的专用 SQL 服务器。这些服务器已经有大约 5 年的历史了,但它们仍然是很好的服务器(64GB 内存,Intel Xeon)。哪个是主要的并不重要,两者都会经历减速。服务器还有其他一些实例,但我正在尝试排除故障的实例是迄今为止最大的实例。其中一些实例是 Dev 和 Staging,它们都大约有一个月的历史。我一直在运行的查询在其中任何一个上都需要两分钟,但在现场需要 20-40 分钟。我试过实时复制到一个新实例,但它也很慢。
我试过重新启动实例、更新统计信息、刷新视图(我们并没有真正使用)、重建索引,但似乎没有任何帮助。有任何想法吗?
sql-server ×8
bulk ×1
clustering ×1
filegroups ×1
jobs ×1
partitioning ×1
performance ×1
storage ×1
t-sql ×1
trigger ×1