我正在尝试首先检查在执行我的包之前是否有任何新记录要处理.我在SQL Server 2008 R2表中有一个名为"已处理"的字段,如果处理则值为1,否则为0.
我想查询它:
select count(processed) from dbo.AR_Sale where processed = 0
Run Code Online (Sandbox Code Playgroud)
如果结果为0,我想发送一封电子邮件,说明记录不存在.如果大于零,我想继续执行包.我是SSIS的新手,似乎无法找出使用什么工具.
我的包有一个数据流项,其中有一个OLE DB连接到数据库.连接使用查询来返回记录.不幸的是,即使没有要处理的记录,查询也会成功完成(应该如此).这是查询:
Select * from dbo.AR_Sale where processed = 0
Run Code Online (Sandbox Code Playgroud)
我将这些记录复制到数据仓库,然后通过将处理过的字段从0更改为1来运行另一个查询以更新源表.
任何帮助都将非常感谢.
我用Google搜索了没有成功.我正在使用SQL Server Profiler for SQL Server 2008 R2,并且我已确保对于跟踪的"事件选择":
然后我在加载.aspx页面之后开始跟踪,但是在我执行调用某个SQL存储过程的操作之前.
然后我可以在跟踪开始时看到在'EventClass'列下我有'ExistingConnection',但是这些事件的'TextData'似乎没有标识我正在连接的数据库 - 它告诉我主要的数据库设置(例如,设置ansi_padding).我还可以看到,对于某些事件我可以看到'NTUserName',这给了我一些线索.我想要找到的是我连接的数据库.谁想要一些积分来告诉社区?:)
database connection trace sql-server-profiler sql-server-2008-r2
我使用下面的表来实现子类型,这是一种非常常见的方法:
CREATE TABLE dbo.Vehicles(
ID INT NOT NULL,
[Type] VARCHAR(5) NOT NULL,
CONSTRAINT Vehicles_PK PRIMARY KEY(ID),
CONSTRAINT Vehicles_UNQ_ID_Type UNIQUE(ID, [Type]),
CONSTRAINT Vehicles_CHK_ValidTypes CHECK([Type] IN ('Car', 'Truck'))
);
GO
CREATE TABLE dbo.Cars(ID INT NOT NULL,
[Type] AS CAST('Car' AS VARCHAR(5)) PERSISTED,
OtherData VARCHAR(10) NULL,
CONSTRAINT Cars_PK PRIMARY KEY(ID),
CONSTRAINT Cars_FK_Vehicles FOREIGN KEY(ID, [Type])
REFERENCES dbo.Vehicles(ID, [Type])
);
GO
-- adding parent rows
INSERT INTO dbo.Vehicles(ID, [Type])
VALUES(1, 'Car'),
(2, 'Truck');
Run Code Online (Sandbox Code Playgroud)
通过INSERT添加子行没有问题,如下所示:
INSERT INTO dbo.Cars(ID, OtherData)
VALUES(1, 'Some Data');
DELETE FROM dbo.Cars; …Run Code Online (Sandbox Code Playgroud) 我正在尝试导入.fmt格式定义的文本文件.这个文本文件不是以逗号分隔,而是我称之为列分隔(即前8个字符是第一个字段,接下来的3个字符是第二个字符,等等).当我运行下面的查询时,我得到一个"操作系统错误代码(null)"消息,这是奇怪的,因为我使用SQL Server 2008r2与Vista.
请向我解释这个错误信息的含义以及如何解决这个问题?我用Google搜索并在其他论坛上发现了类似的问题,但它们从未得到过真正的回答.
这是我的查询:
BULK INSERT LoadTable FROM '\\Dev2\Queries\Test.txt'
WITH (FIRSTROW = 2,
FORMATFILE = '\\Dev2\fmt\Test.fmt',
KEEPNULLS)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Cannot bulk load because the file "\\Dev2\fmt\test.fmt" could not be read.
Operating system error code (null).
Run Code Online (Sandbox Code Playgroud)
以下是Test.fmt包含的内容:
9.0
7
1 SQLCHAR 0 8 "" 1 Record_Control_Data SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 3 "" 2 Filler ""
3 SQLCHAR 0 1 "" 3 Member_Code SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 2 "" 4 Member_Sequence_Number SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 9 "" 5 Participant_SSN SQL_Latin1_General_CP1_CI_AS
6 …Run Code Online (Sandbox Code Playgroud) 对于通知项目,想要推送事件通知.这些是登录,更改个人资料等内容,并显示给相应的客户端.我想讨论将它们放在一起的一些想法,并就最佳方法提出一些建议.
我在这里注意到,可以使用_changes流检测对CouchDB所做的更改,由Node拾取,然后一个进程启动.我想实现这样的东西(我使用的是SQL Server,但这个级别的入口点可能不是最好的解决方案).
而不是遵循CouchDB示例(检测基于数据库的事件,我认为这只会使事情变得复杂,因为我们对客户端事件感兴趣),我当时认为当事件发生时,例如用户登录,然后发送消息带有一些事件详细信息的节点服务器(RESTful请求?).然后处理该消息并将其广播到所有连接的客户端; 相应的客户端显示通知.
拟议的生态系统:
这将建立在使用.Net框架(IIS等)的现有项目之上.许多客户端的浏览器不支持Web套接字,因此使用Socket.IO是一个不错的选择(后备支持).但是,从我所看到的,Socket.IO仍然只支持通过IISNode进行长轮询(这不是一个真正的问题).
一个选项是将Socket.IO/Node端点暴露给所有客户端,以便基于客户端的通知可以通过JS发送到节点服务器,节点服务器广播消息.(遵循基本的聊天服务器/客户端/服务器示例).
或者,可以使用IIS端点,但只能支持长轮询(通过Socket.IO).这将提供一些额外的.Net后端处理,但可能使架构过于复杂.
Node是否有基于SQL Server的事件通知?
什么是最好的方法?
如果我没有正确的术语生态系统配置,请澄清.
谢谢.
我想知道如何通过脚本改变sqlserver身份验证模式?
我需要一个脚本在查询窗口中运行,并将身份验证更改为混合模式.任何的想法?
我有一个SQL表,我想按ID选择多行.例如,我想从我的表中获取ID为1,5和9的行.
我一直在使用类似于下面的WHERE IN语句执行此操作:
SELECT [Id]
FROM [MyTable]
WHERE [Id] IN (1,5,9)
Run Code Online (Sandbox Code Playgroud)
然而,对于"IN"子句中的大量项目来说,这是非常缓慢的
下面是使用1,000,000行的表中的where in选择行的一些性能数据
Querying for 1 random keys (where in) took 0ms
Querying for 1000 random keys (where in) took 46ms
Querying for 2000 random keys (where in) took 94ms
Querying for 3000 random keys (where in) took 249ms
Querying for 4000 random keys (where in) took 316ms
Querying for 5000 random keys (where in) took 391ms
Querying for 6000 random keys (where in) took 466ms
Querying for 7000 …Run Code Online (Sandbox Code Playgroud) 谁能解释xp_Delete_filesql server 中的参数列表.我找不到此存储过程的msdn文档.
我从维护计划获得了xp_Delete_file的脚本但是没有理解第一个参数.
sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014
我有下表:
示例:
create table test
(
col1 varchar(10),
col2 varchar(20),
col3 varchar(30)
);
Run Code Online (Sandbox Code Playgroud)
现在我想按变量插入两个值,最后一个用#temp表插入.
#Temp:
create table #temp
(
col3 varchar(30)
);
Run Code Online (Sandbox Code Playgroud)
#Temp:包含
col3
-----
A1
A2
A3
Run Code Online (Sandbox Code Playgroud)
插入测试表:
Declare @col1 varchar(10) = 'A'
Declare @col1 varchar(20) = 'B'
Declare @sql varchar(max)
SET @SQL = N'insert into test values('+@col1+','+@col2+',........);
EXEC(@SQL)
/* How to insert `@col3` from #temp to test table*/
Run Code Online (Sandbox Code Playgroud)
预期成果:
col1 col2 col3
------------------
A B A1
A B A2
A B A3
Run Code Online (Sandbox Code Playgroud)
注意:变量值必须重复,直到#temp值插入到表测试中.
我有一个非常简单的查询,由Entity-Framework生成,有时当我尝试运行此查询时,执行几乎需要30秒以上,我有时间Exception.
SELECT TOP (10)
[Extent1].[LinkID] AS [LinkID],
[Extent1].[Title] AS [Title],
[Extent1].[Url] AS [Url],
[Extent1].[Description] AS [Description],
[Extent1].[SentDate] AS [SentDate],
[Extent1].[VisitCount] AS [VisitCount],
[Extent1].[RssSourceId] AS [RssSourceId],
[Extent1].[ReviewStatus] AS [ReviewStatus],
[Extent1].[UserAccountId] AS [UserAccountId],
[Extent1].[CreationDate] AS [CreationDate]
FROM ( SELECT [Extent1].[LinkID] AS [LinkID], [Extent1].[Title] AS [Title], [Extent1].[Url] AS [Url], [Extent1].[Description] AS [Description], [Extent1].[SentDate] AS [SentDate], [Extent1].[VisitCount] AS [VisitCount], [Extent1].[RssSourceId] AS [RssSourceId], [Extent1].[ReviewStatus] AS [ReviewStatus], [Extent1].[UserAccountId] AS [UserAccountId], [Extent1].[CreationDate] AS [CreationDate], row_number() OVER (ORDER BY [Extent1].[SentDate] DESC) AS [row_number]
FROM …Run Code Online (Sandbox Code Playgroud) sql-server ×7
sql ×3
asp.net-4.0 ×1
c# ×1
connection ×1
database ×1
iisnode ×1
node.js ×1
socket.io ×1
sql-insert ×1
ssis ×1
t-sql ×1
trace ×1