小编Azn*_*l92的帖子

结合命令行和T-SQL - SQL Server

我想通过T-SQL SQL Server 2008上执行一些SQLCMD有我的代码的一部分在那里我检查数据文件的大小,如果该数据文件大小不等于0,然后开始删除特定表,我可以在新数据中使用BCP.

下面是我的代码未执行:

SET @myVariable = '
SETLOCAL 
FOR %%R IN (X:\Main Folder\Data\'+@databaseName+'_'+@tableName+'.dat) DO SET size=%%~zR 
IF %size% NEQ 0 (
        SQLCMD -E -S my-server-name -Q "DELETE FROM '+@databaseName+'.'+@schemaName+'.'+@tableName+';" >> X:\Main Folder\Log\Log.txt 
)'

EXEC master..xp_cmdshell @myVariable
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当我执行我的存储过程时,上面的代码似乎被跳过,因为它不会回写任何错误消息.

编辑:重新调整间距和我的代码,@ myVariable,现在执行.但是,即使数据文件大小= 0,它仍然无法删除表.但是,当我在批处理文件中对其进行硬编码时,它的工作方式非常好.有任何想法吗?

sql-server sqlcmd

5
推荐指数
1
解决办法
583
查看次数

带有 WHERE 子句的 DROP 数据库 - TSQL

我想通过比较指定表中的日期列来删除任何超过 15 天的开发数据库。

有没有办法用 WHERE 子句编写 DROP 数据库查询,或者我必须执行动态 SQL?

下面是我的 SQL 查询:

DROP DATABASE IF EXISTS 
WHERE (SELECT ID FROM master.TableName
        WHERE Date < DATEADD(DAY, -15, GETDATE())
            AND ColumnName1 = 1
            AND ColumnName2 = 0)
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

5
推荐指数
1
解决办法
609
查看次数

在WHERE子句中将INT转换为DATE - TSQL

在SQL Server上使用sysjobs和sysjobhistory,我一直在谷歌搜索,但我似乎无法找到这个问题的直接答案.我认为这是因为我试图在WHERE子句中这样做.

因此,基本上尝试选择在其运行的同一天失败的作业(基本上是今天的日期),因为当前代码正在选择所有失败的现有作业.

以下是我的代码:

SELECT DISTINCT 
    sj.name,
    COUNT(sjh.instance_id) AS errors
FROM 
    msdb..sysjobhistory sjh 
JOIN 
    msdb.dbo.sysjobs sj ON sj.job_id = sjh.job_id
WHERE 
    name IN ('SQLAgentJob1', 'SQLAgentJob2')
    AND sjh.run_status = 1
    AND (SELECT CONVERT(DATE, CONVERT(INT, sjh.run_date), 112)) = (SELECT CONVERT(DATE, GETDATE(), 112))
GROUP BY 
    sj.name
Run Code Online (Sandbox Code Playgroud)

我一直收到错误声明:

消息529,级别16,状态2,行13
不允许从数据类型int到日期的显式转换.

有任何想法吗?

t-sql sql-server

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

创建触发器以删除大于90天的行

尝试创建一个触发器,删除任何90天的记录.我使用了stackoverflow中的一个触发器语句,我发现并稍微更改了语句,但在我的MySQL Workbench中,我收到了语法错误.我似乎无法弄清楚出了什么问题.

以下是我的查询:

create trigger user_connections_dump after insert on user_connections 
for each row
begin
   delete from connection_time where Date('2014-06-09') > Date('now','-90 days')
end;
Run Code Online (Sandbox Code Playgroud)

mysql mysql-workbench

1
推荐指数
1
解决办法
5808
查看次数

标签 统计

sql-server ×3

t-sql ×2

mysql ×1

mysql-workbench ×1

sqlcmd ×1