我有一个名为MyTableon 的表,我已经定义了一个触发器,如下所示:
CREATE TRIGGER dbo.trg_Ins_MyTable
ON dbo.MyTable
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
insert SomeLinkedSrv.Catalog.dbo.OtherTable
(MyTableId, IsProcessing, ModifiedOn)
values (-1, 0, GETUTCDATE())
END
GO
Run Code Online (Sandbox Code Playgroud)
每当我尝试插入一行时MyTable,都会收到以下错误消息:
Msg 3910,Level 16,State 2,Line 1事务上下文,由另一个会话使用.
我已SomeLinkedSrv正确定义为链接服务器(例如,select * from SomeLinkedSrv.Catalog.dbo.OtherTable工作正常).
如何避免错误并成功插入记录+执行触发器?
我的报告中有3个多值参数.其中2个是可选的.有没有办法在报告中获得结果而不从2个可选参数中选择任何参数.
我的存储过程将多个参数检查为(状态IN(SELECT*FROM Split(@State,',')))
我已经为WHERE CustomerId = @CustId或@CustId IS NULL的单值参数做了这个.
WorkAround: 我选择了'允许空值',它抛出此错误"多值参数不能包含空值"
谁能指出我正确的方向?
有什么不同?如果我有这两个表:
CREATE TABLE Account (Id int NOT NULL)
CREATE TABLE Customer (AccountId int NOT NULL)
Run Code Online (Sandbox Code Playgroud)
我想要一个连接两者的外键,我应该做以下哪些?为什么?
选项1:
ALTER TABLE [dbo].[Customer] WITH CHECK
ADD CONSTRAINT [FK_Accounts_Customers] FOREIGN KEY([AccountId])
REFERENCES [dbo].[Account] ([Id])
Run Code Online (Sandbox Code Playgroud)
选项2:
ALTER TABLE [dbo].[Account] WITH CHECK
ADD CONSTRAINT [FK_Accounts_Customers] FOREIGN KEY([Id])
REFERENCES [dbo].[Customer] ([Id])
Run Code Online (Sandbox Code Playgroud) 我在工作失败时发送通知时遇到问题.我创建了数据库邮件配置文件并将其分配给SQL代理和重新启动的SQL代理.当我运行程序时msdb.dbo.sp_send_dbmail,正在发送电子邮件.此外,当我使用数据库邮件发送测试电子邮件时,它工作正常.但是当我在Job失败时设置通知时,在作业日志中我看到以下信息:注意:无法通过电子邮件通知"SQL作业失败".
我不知道这个问题的根源是什么.我发现这个提示:http://sqlblog.jfperry.com/jpsql/post/2009/04/07/NOTE-Failed-to-notify-7boperator7d-via-email.aspx
但我检查了在SQL Agent中启用了配置文件.SQL Agent已重新启动.哪里可以成为问题的根源?
我有这个sql,
IF(@ID = '')
BEGIN
SET @ID = NULL;
END
IF(@Name = '')
BEGIN
SET @Name = NULL;
END
IF(@PhoneNumber = '')
BEGIN
SET @PhoneNumber = NULL;
END
IF(@Price = '')
BEGIN
SET @Price = NULL;
END
IF(@NewPrice = '')
BEGIN
SET @NewPrice = NULL;
END
IF(@ModelNumber = '')
BEGIN
SET @ModelNumber = NULL;
END
IF(@SKU = '')
BEGIN
SET @SKU = NULL;
END
Run Code Online (Sandbox Code Playgroud)
我正在寻找IsEmpty函数,如ISNULL.所以我可以,
ISEMPTY(@SKU, NULL)
Run Code Online (Sandbox Code Playgroud)
这在SQL中是否可行.
我正在为某种大学写一个数据库,并且有一个名为的表
Contact_Assign其参数是:
Is_Instructor UD_BOOLEAN NOT NULL,
Is_TeacherAssistant UD_BOOLEAN NOT NULL,
Is_Student UD_BOOLEAN NOT NULL,
Registration_ID UD_ID NOT NULL,
Contact_ID UD_ID NOT NULL,
Run Code Online (Sandbox Code Playgroud)
现在我想在此表中插入虚拟数据,但我不知道如何为布尔参数执行此操作.
PS.UD_BOOLEAN是
CREATE TYPE UD_BOOLEAN FROM BIT
Run Code Online (Sandbox Code Playgroud)
任何想法怎么样?
当我运行时,select @@version我得到以下内容:我认为英特尔X86意味着我正在运行32位版本 - 但后来我也看到了最终的X64 ....
Microsoft SQL Server 2008 R2(SP2) - 10.50.4000.0(Intel X86)2012年6月28日08:42:37
版权所有(c)Microsoft Corporation在Windows NT 6.1上具有高级服务的Express Edition(Build 7601:Service Pack 1)(WOW64)
当我跑步时,Exec master.dbo.xp_msver我得到以下内容:
1 ProductName NULL Microsoft SQL Server
2 ProductVersion 655410 10.50.4000.0
3 Language 1033 English (United States)
4 Platform NULL NT INTEL X86
5 Comments NULL SQL
6 CompanyName NULL Microsoft Corporation
7 FileDescription NULL SQL Server Windows NT
8 FileVersion NULL 2009.0100.4000.00 ((KJ_PCU_Main).120628-0827 )
9 InternalName NULL SQLSERVR
10 LegalCopyright NULL Microsoft Corp. …Run Code Online (Sandbox Code Playgroud) 使用的软件:Windows 7 64位Ultimate,.Net 4,SQL Server 2008 R2.
select @@ version返回:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)
要重现,并假设您有本地sql server 2008 R2实例,请将以下代码粘贴到linqpad中并将其作为程序运行.
它爆炸了:
链接服务器'(null)'的OLE DB提供程序'STREAM'返回列'[!BulkInsert] .Value'的无效数据.
void Main()
{
SqlConnection cn = new SqlConnection("data source=localhost;Integrated Security=SSPI;initial catalog=tempdb;Connect Timeout=180;");
cn.Open();
IList<decimal> list = new List<decimal>() {-8m, 8m};
decimal result = list.Sum(x => x);
Console.WriteLine(result == 0);
string tableName …Run Code Online (Sandbox Code Playgroud) 我们正在使用SQL Server数据层应用程序(dacpac或DAC包),我很难找到当前版本的数据库.
有没有办法使用以下任何方法获取当前版本:
我正在开发一个项目,我们将在SQL Server 2008 R2下与ReportService2010报告Web服务进行交互.在过去,我使用过ReportService2005.asmx,我的问题是,我找不到任何关于如何使用这个新的(2010)报告Web服务呈现报告的合理示例.
使用2005 Web服务时,使用wsdl.exe实用程序创建代理时提供了"Render"方法.是否有一个等效的方法(或一组方法),使用ReportService2010服务完成相同的事情?或者是否有任何端到端的初始化和调用新代理的体面示例?
即使MSDN也没有太多信息,并且在ReportService2010 API文档的某些部分中,仍有旧的代码片段仅适用于2005 Web服务.
更新:一个更好的问题可能是在SSRS 2008和SSRS 2008 R2之间如何以编程方式调用报表服务......我可以看到,即使在SSRS 2008 R2下,仍然存在ReportService2005.asmx,以及ReportExecution2005.asmx,但没有相应的ReportExecution2010.asmx.
叹
解决方案更新:
在与我公司的某人交谈后,我被告知以下情况:
不幸的是,所有上述信息都是从各种链接中挑选出来的,其中没有一个链接简明扼要地陈述了上述所有内容.您通常会假设供应商向客户开发人员解释这种事情.
sql ×3
sql-server ×3
t-sql ×2
asp.net ×1
c#-4.0 ×1
foreign-keys ×1
sqlbulkcopy ×1
ssrs-2008 ×1
triggers ×1