在Windows 7上安装Visual Studio 2008和SQL Server 2008后,使用SQL Management Studio连接到服务器时出现以下错误:
无法将"System .__ ComObject"类型的COM对象强制转换为接口类型"Microsoft.VisualStudio.OLE.Interop.IServiceProvider".此操作失败,因为由于以下错误,对IID为"{6D5140C1-7436-11CE-8034-00AA006009FA}"的接口的COM组件的QueryInterface调用失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) .(Microsoft.VisualStudio.OLE.Interop)
我看过博客帖子建议重新注册actprxy.dll,但这没有任何效果.有谁知道如何解决这个问题?
我有一个计算列,我需要一个位字段,这里是一个公式示例:
case when ([some_field] < [Some_Other_field])
then 0
else 1
end
Run Code Online (Sandbox Code Playgroud)
使用此公式计算列集的数据类型为int.
强制使用正确数据类型的最佳方法是什么?
通过CONVERT对整个案例的陈述,数据类型就是bit它Allow Nulls
CONVERT([bit],
case when (([some_field] < [Some_Other_field])
then 0
else 1
end,
0)
Run Code Online (Sandbox Code Playgroud)
CONVERT关于结果表达式的语句也是如此,bit但数据类型却是如此Allow Nulls
case when (([some_field] < [Some_Other_field])
then CONVERT([bit], (0), 0)
else CONVERT([bit], (1), 0)
end
Run Code Online (Sandbox Code Playgroud)
或者有一种更聪明的方法吗?
谁能解释为什么SQL Server允许下面代码中的第三个插入(标记为Query Data)?
据我所知,检查约束应该只允许:
Code为null且System为null.Code不是null并且System是1.我的第一个想法是ANSI NULLS,但设定它们on或off没有任何区别.
这是我们在应用程序中发现的更大问题的简化示例(系统是根据数字列表进行检查的 - IN(1, 2, etc.)).我们用一个外键(而不是IN)和一个新的检查约束替换了这个检查,这个约束允许null或者两者都不为null; 这样做阻止了第三次插入.
IF EXISTS (SELECT * FROM sys.check_constraints WHERE object_id = OBJECT_ID(N'[dbo].[CK_TestCheck]') AND parent_object_id = OBJECT_ID(N'[dbo].[TestCheck]'))
ALTER TABLE [dbo].[TestCheck] DROP CONSTRAINT [CK_TestCheck]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestCheck]') AND type in (N'U'))
DROP TABLE [dbo].[TestCheck]
GO
SET ANSI_NULLS ON
GO
CREATE TABLE TestCheck(
[Id] …Run Code Online (Sandbox Code Playgroud) SQL Server如何确定列的顺序SELECT *?
我知道"Order By"对于排序数据至关重要,但我希望列名一致.
注意:我的代码不依赖于返回列的实际顺序.我只是想知道SQL Server如何决定订购列名.
在我的团队使用的大约20台计算机中,其中一台的行为不同.任何差异都值得研究.打开SQL Server Management Studio时,列名称排序对于所有计算机都是相同的.当我们的应用程序进行查询时,我看到了差异.
我使用的是SQL Server 2008和SQL Server 2008 R2.我的应用程序使用C#System.Data.SqlClient来访问数据库.
编辑:我的问题是,其中一台计算机配置为以"sa"身份登录,而不是以预期用户身份登录.当我们打算查看视图时,查询直接命中了表.感谢您对sys.columns的帮助
我想每天使用唯一名称对我的服务器的所有数据库进行完整的数据库备份.为此我有一个想法,保持时间戳,使数据库副本分开.假设服务器上有一个名为ABCD的数据库,那么它应该被备份为:
ABCD_21_03_2013
ABCD_22_03_2013
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点.我对这些类型的SQL备份JOBS了解不多.
我执行它时有一个存储过程我遇到了错误
将varchar值'+ @ dptId +'转换为数据类型int时转换失败
我得到DepartmentId一个像字符串,(1,3,5,77)并将其传递给我的存储过程.
create table dummy (id int,name varchar(100),DateJoining Datetime, departmentIt int)
insert into dummy values (1,'John','2012-06-01 09:55:57.257',1);
insert into dummy values(2,'Amit','2013-06-01 09:55:57.257',2);
insert into dummy values(3,'Naval','2012-05-01 09:55:57.257',3);
insert into dummy values(4,'Pamela','2012-06-01 09:55:57.257',4);
insert into dummy values(5,'Andrea','2012-09-01 09:55:57.257',3);
insert into dummy values(6,'Vicky','2012-04-01 09:55:57.257',4);
insert into dummy values(7,'Billa','2012-02-01 09:55:57.257',4);
insert into dummy values(8,'Reza','2012-04-01 09:55:57.257',3);
insert into dummy values (9,'Jacob','2011-05-01 09:55:57.257',5);
Run Code Online (Sandbox Code Playgroud)
查询我尝试过:
declare @startdate1 varchar(100) ='20120201'
declare @enddate1 varchar(100)='20130601'
declare @dptId varchar(100)='3,4'
select …Run Code Online (Sandbox Code Playgroud) 我在这里发了一个问题,但是没有人回答,所以我试着把注意力集中在让我的查询变得缓慢的问题上.哪一个更快更有效?左或后点?
大家好,这里的每个人都是我的代码
SELECT
'Expired Item -'+ DateName(mm,DATEADD(MM,4,AE.fld_LOAN)) as [Month]
,COUNT(PIT.fld_ID)'COUNT'
,SUM (PIT.fld_GRAM)'GRAMS'
,SUM (PH.fld_AMNT)'PRINCIPAL'
FROM #AllExpired AE
INNER JOIN Transactions.tbl_ITEM PIT
ON AE.fld_MAINID=PIT.fld_MAINID
INNER JOIN Transactions.tbl_HISTO PH
ON AE.fld_MAINID =PH.fld_MAINID
GROUP BY DATENAME(MM,(DATEADD(MM,4,AE.fld_LOAN)))
Run Code Online (Sandbox Code Playgroud)
我面临的问题是我的Count函数如果没有值则不返回0,如果没有检索到结果值,则Sum函数不返回NULL,而是只输出空白,为什么会这样?我该如何解决?
这是一个示例输出的屏幕截图

当然这不是我想要它输出零和空值.请帮帮我,我不知道什么是错的.谢谢.
说我有这张桌子
id | data | value
-----------------
1 | a | A
2 | a | A
3 | a | A
4 | a | B
5 | b | C
6 | c | A
7 | c | C
8 | c | C
Run Code Online (Sandbox Code Playgroud)
我想删除那些具有重复值的行,同时保持每个数据的最小值,例如结果将是
id | data | value
-----------------
1 | a | A
4 | a | B
5 | b | C
6 | c | A
7 | c | C
Run Code Online (Sandbox Code Playgroud)
我知道一种方法是做一个像这样的联盟: …
我在SQLServer 2008r2中有一个表,如下所示.
我想选择[Fg]列= 1的所有记录,其中每个记录连续按[Id]顺序导入每个[T_Id]和[N_Id]组合的值2 .
可能存在[Fg]= 2 之前的记录不= 1的情况
可以有任意数量的记录,其值[Fg]= 1,但只有一个记录,其中[Fg]每个记录= 2 [T_Id]和[N_Id]组合.
因此,对于下面的示例,我想选择带有[Id]s(4,5)和(7,8,9)和(19,20)的记录.
[T_Id]不包括3和4的任何记录.
预期产出
示例数据集
DECLARE @Data TABLE ( Id INT IDENTITY (1,1), T_Id INT, N_Id INT, Fg TINYINT )
INSERT INTO @Data
(T_Id, N_Id, Fg)
VALUES
(1, 2, 0), (1, 2, 1), (1, 2, 0), (1, 2, 1), (1, 2, 2), (2, 3, 0), (2, 3, 1), …Run Code Online (Sandbox Code Playgroud)