标签: sql-server-2008

如何从表中选择而不包含重复的列值?

在上一个问题中如何合并数据集而不包括冗余行?我询问了在导入过程中过滤冗余历史数据的问题,但@DavidSpillett 正确回答说我无法做我想做的事情。

我现在不想在导入过程中过滤表,而是想在表上创建一个视图,该视图仅返回价格发生变化的记录。

这是为解决这个问题而改写的原始场景:

我们有一个物品的历史价格表。该表包含多个日期记录相同价格的行。我想在此数据上创建一个视图,该视图仅显示价格随时间的变化,因此如果价格从 A 更改为 BI 想要查看它,但如果它从 B“更改”为 B 那么我不想看到它.

例子:如果昨天的价格是$1,今天的价格是$1,并且没有其他价格变化,那么今天的价格可以从昨天的价格推断出来,所以我只需要昨天的记录。

示例(http://sqlfiddle.com/#!3/c95ff/1):

Table data:

Effective            Product  Kind  Price
2013-04-23T00:23:00  1234     1     1.00
2013-04-24T00:24:00  1234     1     1.00 -- redundant, implied by record 1
2013-04-25T00:25:00  1234     1     1.50
2013-04-26T00:26:00  1234     1     2.00
2013-04-27T00:27:00  1234     1     2.00 -- redundant, implied by record 4
2013-04-28T00:28:00  1234     1     1.00 -- not redundant, price changed back to 1.00

Expected view data:

Effective            Product  Kind  Price
2013-04-23T00:23:00  1234     1 …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008

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

将数据库移动到新服务器

我的数据库服务器正在停用。我们有一个新的数据库服务器来代替它。两台服务器都具有相同的操作系统和 SQL Server 2008。我需要将所有数据库和数据转移到新服务器上。

什么是最好的方法来确保尽可能少的问题?

我的数据不仅仅是表、视图和存储过程。还有几个 SQL Server 代理作业和几个数据库维护计划和计划备份。

系统不在晚上使用,所以如果需要的话,我有一个深夜的机会使数据库脱机。

我可以将MSSQL目录复制到新服务器吗?或者我应该单独备份每个数据库?如果我备份每个数据库,我是否也应该备份系统数据库(如mastermodelmsdb)?

sql-server-2008 sql-server migration

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

多次收缩 SQL Server 日志文件

最近遇到一个情况,在进行日志备份和收缩文件后,LDF 文件大小保持不变。DBCC LOGINFO 清楚地显示只有一个活动的 VLF 和 SSMS 表示 LDF 中 99% 的空间是空闲的。第一次尝试没有缩小,第二次尝试或第三次尝试也没有缩小。第四次尝试成功后,日志减少到请求的大小。同时,DBCC LOGINFO 说在每个 SHRINKFILE 之后,另一个 VLF 变得活跃。

我决定运行一个新数据库的测试。

CREATE DATABASE logs_test
USE logs_test

-- first look at the VLFs for the logs_test database
DBCC LOGINFO

/*
FileId      FileSize             StartOffset          FSeqNo      Status      Parity CreateLSN
----------- -------------------- -------------------- ----------- ----------- ------ ---------------------------------------
2           253952               8192                 19          2           64     0
2           253952               262144               0           0           0      0

*/

-- put the database into FULL recovery before making a backup
ALTER DATABASE logs_test …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 transaction-log

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

如何关闭表的数据库列的标识

我错误地删除了我的数据库服务器中的一个表。我在另一台服务器上有相同的数据集。

我所做的是单击编辑表的前 100 行,然后将其复制并粘贴到另一个服务器表中。

但是,这里的问题是:表的其中一列是身份。因此,我无法在此处复制该列。

我需要相同的标识值,因为这些值在应用程序中被引用,即使我复制数据并更新它,也会生成新的 id 值。

有什么方法可以关闭该列的标识,粘贴这些值并再次打开标识。

sql-server-2008 sql-server

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

创建列别名时强制使用“as”?

我们发现很多bug都是因为缺少逗号,

select 
    aaaa,
    bbbb  -- forgot comma
    ccc,
    dddddddd,
.....
Run Code Online (Sandbox Code Playgroud)

它是一种使expression name无效的方法并且它必须expression as name在SQL语句中吗?(不是全局的,因为缺少“as”存在的遗留代码)

sql-server-2008 sql-server

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

如何在活动监视器的“最近昂贵的查询”中读取“CPU(毫秒/秒)”?

CPU (ms/sec)在前面的第二毫秒的CPU时间?如果达到1000,是否意味着它使用了100%的CPU?

但是,在我的 8 核服务器上,% Processor Time当“最近昂贵的查询”中最昂贵的查询达到 1000 时,通常会非常低,例如几个百分点。

sql-server-2008 sql-server

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

通过sql server 2008中的存储过程将值从一个表移动到另一个表

我有两张桌子

  1. 登录(用户名、用户名、密码)
  2. audit_login (userid, Transaction_Date, Status (success or failed)

现在我想创建一个存储过程,如果有人想登录,那么他们的用户 ID、Transaction_Date 和状态(成功或失败)详细信息应该自动进入另一个表 audit_login。

然后我想知道登录成功了多少次。

sql-server-2008 stored-procedures insert

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

SQL Server 2012 发布服务器 SQL Server 2008 订阅服务器版本问题

所以我有一个设置,其中一个虚拟机是 SQL Server 2012 发布者,我需要在不同虚拟机上的 SQL Server 2008 订阅者上设置合并复制。

在订阅者上设置订阅时,在添加 SQL Server 订阅者的向导步骤中,我收到该错误:

对于合并发布,订阅服务器的版本不得超过发布服务器的版本。

我读到 SQL Server 2012 发布支持 2008 年及以上的订阅者。

有任何想法吗 ?

sql-server-2008 sql-server sql-server-2012

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

您可以粘贴到 SSMS 中并运行的 INSERT 语句的数量限制是多少?

我目前正在创建一个存储过程,用插入语句列表填充表,以便我的 DBA 可以将表的内容导出到文本文件,然后将语句粘贴到 SSMS 中并运行(它是从测试环境复制数据生活环境 - 我被两个环境看不到对方的事实所限制,环境中没有配置 bcp

我的问题是我要导出的表最多可以有 2,000,000 条插入语句。可以粘贴和运行的内容是否有限制?

sql-server-2008 sql-server

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

在多租户环境中部署 SQL Server 备份维护计划

我们有一个多租户环境,我一直在尝试在所有服务器上部署标准化的维护计划。我一直在遇到正确导入维护计划的问题,以及设置正确的最小权限来运行作业的问题。

任何人都可以就如何在异构多租户环境(例如我们的环境)中部署此类备份维护计划提供一些指导。我在下面详细介绍了我的尝试,鉴于复杂程度正在迅速上升,我想知道我是否正朝着完全不正确的方向前进。

有没有更好的办法?

我正在寻找一种可以通过脚本/SQLCMD 轻松部署的解决方案,因此我可以通过 Puppet 推出它。我也希望坚持维护计划,因为我们团队中的 SQL 知识很少,并且未来对备份计划的编辑需要深入的 T-SQL 知识将是有问题的(尽管它看起来像一个 T-SQL 脚本或为了运行备份可能是最简单的方法)。

环境

  • 现在我们主要运行 Windows 2008 R2 和 SQL Server 2008 R2 Standard
  • 但是,支持 Windows 2012 和 SQL Server 2012/2014 的解决方案将是目标
  • 我们为多个客户支持许多 SQL Server,所有这些都是隔离的。
  • 一些客户在他们自己的 Active Directory 林中运行,而其他客户则运行没有 AD 的独立 SQL Server。因此,在 AD 身份验证方面没有共同因素。
  • 所有客户都被隔离在他们自己的网段中,但我们可以在防火墙中打孔以进行备份。
  • 现在,我们使用 Puppet 进行跨服务器的基本配置管理。基本上,这转化为以标准方式在服务器上部署新文件、运行脚本、SQL(通过 SQLCMD)和设置权限/用户的简单能力。

我试过的

目前,我的主要尝试包括通过集成服务将我的维护计划导出到 DTSX 文件,以及作业子计划的相关 T-SQL。然后将这些导入到目标服务器中,以相同的用户名/密码运行。

一些粗略的步骤:

  1. 照常在服务器上创建维护计划。设置时间表。

  2. 在计划中配置本地服务器连接以作为我的标准化“备份”用户进行连接。

  3. 将 subplan1 作业配置为由“backup”用户拥有,并将 Subplan_1 Step 1 配置为通过相同的备份 SQL 用户进行连接。

  4. 本地连接到集成服务并将存储在 MSDB 中的维护计划导出到 DTSX 文件,指定自定义加密密码。还将 Job subplan_1 T-SQL 导出到新的 SQL 文件。

  5. 在所有数据库上授予backup …

sql-server-2008 sql-server backup maintenance-plans

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