标签: sql-server-2008-r2

SQL Server 2008和SQL Server 2008 R2之间的差异来自开发人员的POV

我正在设置我的开发机器,我想知道是否应该在我的机器上安装SQL Server 2008 R2(面向开发人员)或SQL Server 2008(面向开发人员).

我使用的所有数据库都在SQL Server 2008上(而不是R2).所以我很伤心.应该安装我目前使用的?或者我应该有点前瞻性并使用R2版本?

R2安装的客户端工具是否可以连接到非R2服务器?

我想一般来说我想知道的是从开发人员的角度来看R2与非R2的区别是什么?(我真的不太关心后端的东西.)

sql-server-2008 sql-server-2008-r2

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

如何获取数据库上的活动触发器列表?

我的应用程序基于sql server db.

除自定义外,所有客户都具有相同的数据库.

一些自定义包括:新表,修改表,自定义视图,自定义触发器......

当我运行软件更新时,会执行一些脚本.现在我在脚本完成后手动禁用触发器并重新启用.

无论如何,我想自动禁用所有触发器(已启用,可能已经禁用其中一些),然后在最后重新启用它们.

不要重新发明,怎么做?

如何只获取当前数据库上的活动触发器?

一旦我得到这个,我可以以编程方式创建和运行

DISABLE TRIGGER triggername ON TABLENAME

ENABLE TRIGGER triggername ON TABLENAME
Run Code Online (Sandbox Code Playgroud)

sql-server triggers sql-server-2008-r2

13
推荐指数
3
解决办法
6万
查看次数

重新部署SSIS包 - 缓存?

我们注意到最近一个问题,有时重新部署SSIS包似乎不包括最新的更改......当我使用记事本搜索dtsx时,我在代码中看到修改后的脚本,所以肯定会有更改.

我的假设是SSIS包的脚本组件最终在这个过程的某个地方被编译成一个程序集 - 这很可能是因为我认为C#代码无法在没有首先编译它的情况下运行.因此,理论上如果这些程序集最终会被缓存而不是立即被覆盖(由于某种原因),这将解释这个问题.

让我觉得我的理论是正确的唯一"证据"是,如果我在某个时刻继续运行包,它会突然转向新代码.

然而,到目前为止,我还没有找到为什么以及如何发生这种情况,如果是......有人可以帮忙吗?

更新: MSDN说:"与早期版本不同,您可以指出脚本是否已预编译,所有脚本都在SQL Server 2008 Integration Services(SSIS)和更高版本中预编译." - 如果通过预编译它们意味着而不是实际的包运行预编译版本(我认为这是因为包本身似乎没有编译,因为代码在记事本中可见)必须有一种方法来强制引擎覆盖预编译的程序集......但是如何?

更新: SSIS的四个核心组件之一是SQL ServerIntegration Services服务,它是一个Windows服务.显然,此服务将缓存组件/任务元数据,以便SSIS运行时引擎可以轮询缓存以查看安装的内容,这可能有助于加快程序包加载时间.但是,如果包存储在文件系统中(而不是在SQL Integration Services中)并由代理作业执行,则代理作业将使用64位版本的DTEXEC来执行包.我还没有找到任何证据表明在那里会涉及任何缓存,但是在执行的验证阶段确定检查许多参数肯定有选项,例如版本号 - 可能是有原因的.

ssis sql-server-2008-r2

13
推荐指数
1
解决办法
5852
查看次数

bcp:错误= [Microsoft] [SQL Server Native Client 10.0]字符串数据,右截断

我最近在使用bcp时遇到错误.这是错误.

SQLState = 22001,NativeError = 0错误= [Microsoft] [SQL Server Native Client 10.0]字符串数据,右截断

我正在尝试将数据解压缩到没有任何约束的临时表中,并且与数据相比,数据类型也相当大.我有来自不同表的大约11个文件被bcp'd和压缩出来,当解包错误时只有一个文件.这是我一直在成功使用的命令.最近(当试图制作当前WH的副本并设置过程时)我一直面临着问题.

employee_details.dat中的bcp.exe employee_details -n -E -S"servername"-U sa -P"密码"

我已经尝试将命令更改为-C -T -S,当我手动给出格式时,它可以工作.这是一个非常重要的数据包,我需要加载到我的WH.
我不知道我是否在这里看到格式文件.需要任何帮助.

谢谢

肉桂的女孩.

bcp sql-server-2008 sql-server-2008-r2

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

无法打开数据库MSDB

我在我的机器上的SQL Server 2008 R2的本地实例中遇到此问题.这个实例上有几个数据库.但是我无法从对象资源管理器中看到它们中的任何一个.

我可以从新的查询窗口查询我的数据库.但是没能看到它们中的任何一个.

每当我尝试探索数据库时,我都会收到此错误:

无法打开数据库'msdb'.它通过恢复被标记为可疑.有关更多信息,请参阅SQL Server错误日志.(Microsoft SQL Server,错误:926).

我试过了

  1. 刷新连接
  2. 重新连接连接
  3. 重新启动服务Sql Server(MSSQLSERVER).
  4. 重新启动SQL Server Management Studio
  5. 重新启动我的机器

我也试过上面的组合,但没有任何作用.

我的操作系统是Windows 7旗舰版(64位).

SQL Server Management Studio版本为10.50.2500.0.

ssms sql-server-2008-r2

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

SQL Server"." 别名不起作用

我添加了别名"." 它应该指向我的本地(命名)实例,".\ SQL2008".但是当我尝试连接到"."时,它会超时.

我错过了什么或者这是不允许的?

超时

我试过的别名不起作用:

(设置为32位和64位,我也尝试将端口留空.)

别名不起作用.

alias connection-string sql-server-2008 sql-server-2008-r2

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

使用try..catch时,SQL Transaction无法提供..为什么?

你好有用的朋友,

我们在这里遇到了一个问题,我无法弄清楚它为什么会表现出来.希望你能帮助我.

给出TSQL中的以下两个(简化的)存储过程(SQL Server 2008R2)

create procedure [datetransaction1] 
as
begin
    begin try
        begin transaction
        declare @a datetime
        exec datetransaction2 '2013-02-02 22:21', @a output
        select @a
        exec datetransaction2 '2013-020222:22', @a output
        select @a
        exec datetransaction2 '2013-02-02 22:23', @a output
        select @a

        commit transaction
    end try
    begin catch
        print 'Catch'
    end catch
end
Run Code Online (Sandbox Code Playgroud)

create procedure [dbo].[datetransaction2] @text nvarchar(100), @res datetime OUTPUT  
AS
BEGIN 
    BEGIN TRY
        if (LEN(@text) = 16) SET @text = replace(@text, ' ', 'T') + ':00.000'
        else if (LEN(@text) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server transactions try-catch sql-server-2008-r2

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

从多列中选择值到单列

我在数据库中有一个表,其中包含9列包含相同类型的数据,这些值允许为空.我需要将每个非空值选择到一列值中,这些值不关心它们所源自的行的标识.

所以,对于一个看起来像这样的表:

+---------+------+--------+------+
|   Id    | I1   | I2     | I3   | 
+---------+------+--------+------+
|    1    | x1   | x2     |  x7  |
|    2    | x3   | null   |  x8  |
|    3    | null | null   |  null|
|    4    | x4   | x5     |  null|
|    5    | null | x6     |  x9  |
+---------+------+--------+------+
Run Code Online (Sandbox Code Playgroud)

我希望将每个以x为前缀的值选择为单个列.我的结果数据应如下表所示.需要保留订单,因此第一行的第一列值应位于顶部,最后一列的值应位于底部的最后一行:

+-------+
| value |
+-------+
|  x1   |
|  x2   |
|  x7   |
|  x3   |
|  x8   | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server unpivot sql-server-2008-r2

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

将添加非聚集索引锁定我的表吗?

我有一个包含大约200万条记录的表,我需要在uniqueidentifier中添加一个新的非聚簇索引,以提高查询性能.

添加非聚集索引是否会锁定表格,否则会在应用时显着降低性能?

有很多关于索引的好处/缺陷的信息,但我找不到任何告诉我索引操作期间发生的事情

我正在运行SQL Server 2008 R2(在Windows Server 2008上,如果这很重要)

编辑:这是企业版

sql sql-server indexing sql-server-2008-r2

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

SQL Server中用户定义的表类型的性能

我们一直在使用用户定义的表类型将整数列表传递给我们的存储过程.

然后我们使用它们连接到存储过程查询中的其他表.

例如:

CREATE PROCEDURE [dbo].[sp_Name]
(
    @Ids [dbo].[OurTableType] READONLY  
)
AS
    SET Nocount ON

    SELECT
        *
    FROM
        SOMETABLE
        INNER JOIN @Ids [OurTableType] ON [OurTableType].Id = SOMETABLE.Id
Run Code Online (Sandbox Code Playgroud)

在使用更大的数据集时,我们发现这方面的表现很差.

我们用来加快速度的一种方法是将内容转储到临时表中,然后将其加入.

例如:

CREATE PROCEDURE [dbo].[sp_Name]
(
    @Ids [dbo].[OurTableType] READONLY  
)
AS
    SET Nocount ON
    CREATE TABLE #TempTable(Id INT)
    INSERT INTO #TempTable
    SELECT Id from @Ids

    SELECT
        *
    FROM
        SOMETABLE
        INNER JOIN #TempTable ON #TempTable.Id = SOMETABLE.Id

    DROP TABLE #TempTable
Run Code Online (Sandbox Code Playgroud)

这确实显着提高了性能,但我希望对这种方法以及我们未考虑的任何其他后果有所了解.关于为什么这改善性能的解释也可能是有用的.

NB有时我们可能需要传递的不仅仅是一个整数,因此我们不使用逗号分隔列表或类似的东西.

t-sql sql-server user-defined-types table-valued-parameters sql-server-2008-r2

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