小编Tom*_*m H的帖子

如何终止与SQL Server 2005数据库的所有当前连接?

我想重命名数据库,但不断收到数据库上"无法获得独占锁定"的错误,这意味着仍有一些连接处于活动状态.

如何杀死数据库的所有连接以便我可以重命名它?

sql-server sql-server-2005

284
推荐指数
9
解决办法
42万
查看次数

在调试期间在SSIS中监视变量

我在SSIS中有一个项目,并且我添加了一个执行SQL任务,它将结果发送给变量.我想确认该值,因为我担心它会尝试将其写为结果集对象而不是实际整数(在这种情况下,我将返回COUNT).

我的第一个想法是在调试模式下运行它并将全局变量添加到我的Watch窗口.不幸的是,当我右键单击Watch窗口时,"Add Variable"选项显示为灰色.我在这里错过了什么?

我已经开始确认我的变量设置正确,所以我对像脚本放入一个带有值或其他类似的MsgBox的方法不感兴趣.为了将来参考,我希望能够在调试模式下观察变量.如果对此存在某种限制,那么我想知道如果有人知道的话,这一切是什么以及为什么.

这个和每个"教程"的帮助是非常不合适的,我只能说,"将变量添加到Watch窗口并进行调试",好像这样做一定不会有问题.

感谢您的任何见解!

sql debugging ssis sql-server-2005 watch

76
推荐指数
3
解决办法
15万
查看次数

Linq to SQL是不是错过了这一点?ORM-mappers(SubSonic等)不是次优解决方案吗?

我希望社区对我对Linq to Sql和其他ORM映射器的一些看法有所了解.

我喜欢Linq to Sql以及在本机开发语言中表达数据访问逻辑(或一般CRUD操作)的想法,而不是必须处理C#和SQL之间的"阻抗不匹配".例如,要返回与业务层的EventDataSource兼容的Event实例列表,我们使用:

return db.Events.Select(c => new EventData() { EventID = c.EventID, Title = c.Title })
Run Code Online (Sandbox Code Playgroud)

如果我使用旧的SQL-to-C#构造实现它,我必须创建一个Command类,添加EventID参数(使用字符串来描述"@EventID"参数),将SQL查询字符串添加到命令类,执行命令,然后使用(cast-type)nwReader ["FieldName"]拉取每个返回的字段值,并将其分配给我创建的EventData类实例的成员(yuck).

所以,就是人们喜欢Linq/SubSonic /等的原因.并且我同意.

然而,从更大的角度来看,我看到了一些错误的东西.我的感觉是,微软也看到了一些错误,这就是为什么他们将Linq杀死为SQL并试图将人们转移到Linq to Entities.只是,我认为微软正在加倍打赌.

那么,有什么不对?

问题是有架构的宇航员,特别是在微软,他们看着Linq到Sql,并意识到它不是一个真正的数据管理工具:在C#中还有许多你不能轻易做到的事情,他们的目标是修复它. 你看到这体现在Linq to Entities背后的野心,关于Linq 的革命本质的博客文章甚至是LinqPad的挑战.

而这个问题在于,它假定SQL的问题.也就是说,为了减轻轻微的不适(SQL和C#之间的阻抗不匹配),当创可贴(Linq to SQL或类似的东西)做得很好时,微软提出了相当于太空服(完全隔离).

据我所知,开发人员非常聪明,可以掌握关系模型,然后在开发工作中智能地应用它.事实上,我会更进一步说Linq to SQL,SubSonic等已经过于复杂:学习曲线与掌握SQL本身并没有太大的不同.因为,在可预见的未来,开发人员必须掌握SQL和关系模型,我们现在面临学习两种查询/ CRUD语言的问题.更糟糕的是,Linq通常很难测试(你没有查询窗口),从我们正在做的实际工作中删除了一层(它生成了SQL),并且对于像SQL结构这样的SQL结构具有非常笨拙的支持(最好)日期处理(例如DateDiff),"拥有"甚至"分组依据".

有什么选择?就个人而言,我不需要像Linq to Entities那样的数据访问的不同模型.我更喜欢在Visual Studio中弹出一个窗口,输入并验证我的SQL,然后按一个按钮生成或补充一个C#类来封装调用.既然你已经知道了SQL,你不想只输入这样的东西:

Select EventID, Title From Events Where Location=@Location
Run Code Online (Sandbox Code Playgroud)

并最终得到一个EventData类,A)包含EventID和Title字段作为属性,B)有一个工厂方法,它将一个'Location'字符串作为参数,并生成一个List <EventData>?你必须仔细考虑对象模型(上面的例子显然没有解决这个问题),但仍然使用SQL同时消除阻抗不匹配的基本方法对我很有吸引力.

问题是:我错了吗?Microsoft是否应该重写SQL基础结构,以便您不必再学习SQL /关系数据管理? 他们可以用这种方式重写SQL基础结构吗?或者你认为在SQL之上的一个非常薄的层来消除设置参数和访问数据字段的痛苦是足够的吗?

更新我想推广到顶部的两个链接,因为我认为它们捕获了我所追求的重要方面.首先,CodeMonkey指出了一篇题为"计算机科学的越南" …

sql linq-to-entities linq-to-sql

68
推荐指数
11
解决办法
5599
查看次数

Postgresql - 使用带有alter sequence表达式的子查询

我的问题很简单.

是否可以在PostgreSQL中的alter表达式中使用子查询?

我想根据主键列值更改序列值.

我尝试使用以下表达式,但它不会执行.

alter sequence public.sequenceX restart with(从表中选择max(table_id)+1)

提前致谢

sql postgresql subquery sequence alter

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

SQL Server如何处理存储过程中与事务相关的语句?

假设我有一个由几个单独的SELECT,INSERT,UPDATE和DELETE语句组成的存储过程.没有明确的BEGIN TRANS/COMMIT TRANS/ROLLBACK TRANS逻辑.

SQL Server如何以事务方式处理此存储过程?每个语句都会有隐式连接吗?或者存储过程会有一个事务吗?

另外,我怎么能使用T-SQL和/或SQL Server Management Studio自行找到它?

谢谢!

sql sql-server stored-procedures transactions

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

如何从位字段获取真/假计数到两个单独的列

我需要创建一个查询,它将True(1)和False(0)的数量从一个位字段分成两个独立的列.

我正在加入3个表,需要它是这样的:

属性| 班级| 通过| 失败

我将分组属性和类.

t-sql sql-server bit sql-server-2008

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

T-SQL:根据MAX选择列(其他列)

我希望有一种简单的方法可以在不使用子查询的情况下执行此操作:

场景:您有"TableA",其中包含"Key","SubKey"和"Value"列.对于给定的"Key",我需要获得MAX("SubKey")的"Value".

因此,如果表包含行:

KEY SUBKEY VALUE
1   1      100
1   2      200
1   3      300
Run Code Online (Sandbox Code Playgroud)

对于Key = 1,我需要值300.我希望做到这样的事情:

SELECT
  VALUE
FROM
  TableA
WHERE
  Key = 1
HAVING
  SubKey = MAX(SubKey)
Run Code Online (Sandbox Code Playgroud)

但那是不行的.有没有办法在不执行'WHERE SubKey =(subselect for max subkey)'的情况下执行此操作?

sql t-sql sql-server greatest-n-per-group

36
推荐指数
2
解决办法
6万
查看次数

sql - 小时,月等的开始

我知道如何在SQL(SQL Server)中获取当前日期,但是在当天开始时:

select dateadd(DAY, datediff(day, 0, getdate()),0) 
(result:2009-09-17 00:00:00.000)
Run Code Online (Sandbox Code Playgroud)

我需要在本小时开始时(在SQL中)获取当前日期.例如:2009-09-17 17:00:00(我不关心确切的格式)

我需要获得当前日期,但这个月的开头:例如:2009-09-01 00:00:00.000(我不关心确切的格式)

你能帮助我吗?提前致谢

sql t-sql sql-server sql-server-2005

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

更新多个值Mysql

如何在mysql中更新多个值,这不起作用

 UPDATE test SET list=0,
price= 0.00 cprice= 0.00 WHERE test.id =3232
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

在SQL Server 2005/2008中存储历史数据的最佳方法是什么?

我的简化和人为的例子如下: -

让我们说,我想每天测量和存储所有世界城镇的温度(和其他值).我正在寻找一种存储数据的最佳方式,以便在所有城镇中获得当前温度同样容易,因为它可以在一个城镇中获得历史上的所有温度.

这是一个很容易解决的问题,但我正在寻找最佳解决方案.

我能想到的两个主要选择如下: -

选项1 - 相同的表存储当前和历史记录

将所有当前和归档记录存储在同一个表中.

CREATE TABLE [dbo].[WeatherMeasurement](
  MeasurementID [int] Identity(1,1) NOT Null,
  TownID [int] Not Null,
  Temp [int] NOT Null,
  Date [datetime] NOT Null,
)
Run Code Online (Sandbox Code Playgroud)

这样可以保持一切简单,但获得城镇列表和当前温度的最有效查询是什么?一旦表中有数百万行,这会缩放吗?通过在表中使用某种IsCurrent标志可以获得什么?

选项2 - 将所有存档记录存储在单独的表中

将有一个表来存储当前的实时测量值

CREATE TABLE [dbo].[WeatherMeasurement](
  MeasurementID [int] Identity(1,1) NOT Null,
  TownID [int] Not Null,
  Temp [int] NOT Null,
  Date [datetime] NOT Null,
)
Run Code Online (Sandbox Code Playgroud)

还有一个存储历史存档日期的表(也许是由触发器插入)

CREATE TABLE [dbo].[WeatherMeasurementHistory](
  MeasurementID [int] Identity(1,1) NOT Null,
  TownID [int] Not Null,
  Temp [int] NOT Null,
  Date [datetime] NOT Null,
) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server performance sql-server-2008

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