我有一个使用 SQL Server 作为后端的 3rd 方应用程序。具体来说,我们在 SQL Server 2000、SQL Server 2008 和 SQL Server 2008R2 上都有它。任何解决方案都必须可供所有人使用,但只有一部分人的解决方案仍然值得关注。
该应用程序是定制的,不受支持,供应商不再存在。我想要做的是当它写入插入时有一个触发器来读取该插入并开始一个复杂的过程。但是,应用程序在 SQL 插入完成之前不会返回焦点,这意味着冗长的触发器将导致应用程序认为 SQL Server 没有响应并取消/回滚事务。
是否有任何类型的触发器会立即“释放”然后继续处理?或者也许我可以在 SQL Server 内部实现一些其他解决方案。
我一直在尝试将一个CSV表上传到我的远程服务器数据库中,但我发现了一个错误。我MySQL在 RedHat Linux 发行版中使用。我的 mycsv.csv 文件如下所示:
aa,ProductDescription,country,potato,L,11/18/2013,N,05
bb,ProductDescription,country,tomato,L,12/31/9999,N,05
cc,ProductDescription,country,curry,M,01/01/2014,Y,05
dd,ProductDescription,country,spicy,V,05/01/2015,N,
Run Code Online (Sandbox Code Playgroud)
如您所见,最后一行以逗号“,”结尾,没有任何字段(它是空的,应该是这样的,如果我可以将其更改为 NULL,则更好)。但是,当我键入以下查询时:
LOAD DATA INFILE "/home/mycsv.txt"
INTO TABLE inbound.master_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
Run Code Online (Sandbox Code Playgroud)
我在命令行中收到以下错误
错误代码:1366。不正确的整数值:“product_life_cycle”列的第 4 行
有人知道如何在最后一行的逗号后设置空值吗?(我认为这是我无法上传表格的问题)。非常感谢您提前。
表定义:
CREATE TABLE master_data
( aa varchar(6) NOT NULL,
bb varchar(50) NOT NULL,
cc varchar(3) NOT NULL,
dd varchar(2) NOT NULL,
ee varchar(1) DEFAULT NULL,
ff varchar(20) NOT NULL,
gg varchar(1) NOT NULL,
hh int(11) DEFAULT NULL,
PRIMARY KEY (aa), …Run Code Online (Sandbox Code Playgroud) 鉴于以下存储过程,我能否在提供的附加WHERE条件下防止 SQL 注入?
CREATE PROCEDURE [dbo].[ProtectDynamicWhereClause]
(@TableName varchar(50),
@OldestRecordDate varchar(15),
@WhereCondition varchar(250) = NULL)
AS
BEGIN
-- Protect the table name from SQL Injection.
DECLARE @TableNameClean varchar(150) = QUOTENAME(@TableName)
DECLARE @sql nvarchar(4000)
SET @sql =
N'
SELECT * FROM ' + 'dbo.' + @TableNameClean
+ ' WHERE EntryAge > DATEDIFF(year, @OldestRecordDate, GETDATE()) '
IF (@WhereCondition IS NOT NULL)
BEGIN
SET @sql = @sql + ' AND ' + @WhereCondition
END
EXEC sp_executesql @sql, N'@TableNameClean varchar(50), @OldestRecordDate varchar(15)',
@TableNameClean …Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 2016 CTP 30 中使用新的“R”脚本。
终于让它工作了,感谢这个站点。
我遇到了一个问题,我相信其他人也会遇到这个问题。
突然之间“R”脚本不再工作,他们返回了这个错误:
消息 39011,级别 16,状态 1,第 1 行
SQL Server 无法与 LaunchPad 服务进行通信。请验证服务的配置。
原谅我的绿色...但会很感激这方面的一些帮助...
我们正在对 SQL Server 2008 实例进行开发工作,并且该服务器上有多个数据库,这些数据库是我们应用程序的核心,以及在某些情况下拥有数据库的特定用户,并且在某些情况下可以只对它们运行查询。
有一个特定的数据库驻留在我们不想接触的生产服务器上,因此我们设置了日志传送以将其数据复制到我们的开发箱。该数据库已在我们的开发盒上正确恢复并接收持续更新。
在生产设备上,我们将开发设备上所需的用户添加到进行日志传送的数据库中
当我们尝试从开发箱上的应用程序查询数据库的日志传送版本(只读)时,我们的用户无法在“当前安全上下文”下访问数据库。
我运行了一个存储过程来验证我的用户确实是孤儿......
我之前在将数据库还原到另一台机器时遇到过这种情况,并运行了一个存储过程来修复“孤立”用户;但是,因为数据库的开发盒版本是只读的,所以存储过程将不起作用。
有关如何处理此问题的任何建议?
我正在 Access 2010 中处理查询并需要帮助。
我知道 SQL Server 2005 不支持DATE,因此不可能将日期时间转换为日期。
我想要做的是在当前一周的一整天内列出所有具有日期时间的记录。
所以我需要在本周星期一创建的所有记录忽略时间戳。目前我正在使用以下内容,它确实显示了本周的周一至周五,但包括时间戳,这意味着我将根据查询的运行时间看到不同的输出:
set datefirst 1
select
DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Monday,
DATEADD(day, 2 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Tuesday,
DATEADD(day, 3 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as wednesday,
DATEADD(day, 4 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Thursday,
DATEADD(day, 5 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) as Friday
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供帮助吗?
我的预期输出将是本周每一天的一列,每周从星期一开始(即:Datefirst 1)。最终,我将在 case 语句中使用它,例如:
CASE
WHEN DateColumn >= DATEADD(day, 1 - DATEPART(dw, GETDATE()), CONVERT( DATETIME, GETDATE())) …Run Code Online (Sandbox Code Playgroud) 如何从 SQL Server 2014 中的 SQL Server 作业发送电子邮件。我想通过存储过程而不是 Windows 服务来实现电子邮件通知。
我正在尝试添加schemabinding到 SQL Server 2008 中的视图,但出现错误
模式绑定对象中不允许使用语法“Openrowset/Openquery/Opendatasource”。
我使用Openquery是因为我正在查询链接服务器,这是我必须查询的方式。有解决方法吗?
这是我用我的观点尝试的语法
Create View dbo.Test
With Schemabinding
As
Select * FROM OPENQUERY(191.183.18.101, 'Select * from ls1prod.hrinfo')
Go
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单或易于管理的方式来读取 XML 文件,特别是 SQL Server 死锁的 XML 输出。由于各种原因,我有一些服务器没有受到监控。
我在interwebz 上找到了以下代码,但它的输出只是XML。
CREATE TABLE #errorlog (
LogDate DATETIME
, ProcessInfo VARCHAR(100)
, [Text] VARCHAR(MAX)
);
DECLARE @tag VARCHAR (MAX) , @path VARCHAR(MAX);
INSERT INTO #errorlog EXEC sp_readerrorlog;
SELECT @tag = text
FROM #errorlog
WHERE [Text] LIKE 'Logging%MSSQL\Log%';
DROP TABLE #errorlog;
SET @path = SUBSTRING(@tag, 38, CHARINDEX('MSSQL\Log', @tag) - 29);
SELECT
CONVERT(xml, event_data).query('/event/data/value/child::*') AS DeadlockReport,
CONVERT(xml, event_data).value('(event[@name="xml_deadlock_report"]/@timestamp)[1]', 'datetime')
AS Execution_Time
FROM sys.fn_xe_file_target_read_file(@path + '\system_health*.xel', NULL, NULL, NULL)
WHERE OBJECT_NAME like 'xml_deadlock_report';
Run Code Online (Sandbox Code Playgroud)
有没有办法从这个 T-SQL …