我有一个奇怪的要求,要安排报告并将其打印到打印机。
报告本身非常简单,可以放在一个页面上。我可以将它打印到 txt 中,这样就可以了(尽管我愿意接受关于更好产品的建议)。
这是代码。有用。但我不喜欢。具体来说,我想取消嵌套的@bcp 和@SQL。
问题:有没有更优雅的方法来做到这一点?
declare @filepath varchar(255),
@filename varchar(255),
@filetype varchar(255),
@sql nvarchar(max),
@coverpage_text nvarchar(max)
set @filepath = 'C:\users\jmay\documents\'
SET @filename = 'TestFile'
set @filetype = '.txt'
--output to txt
set @sql = N'declare @bcp varchar(4000)
set @bcp = ''bcp " select * from test_data " queryout '
+ @filepath + @filename + @filetype + ' -t " - " -c -T -d DBA''
print @bcp
EXECUTE master.dbo.xp_cmdshell @BCP'
print @sql
exec sp_executesql @sql …Run Code Online (Sandbox Code Playgroud) 我的供应商要求数据仓库数据库区分大小写,但我需要对其进行不区分大小写的查询。
在区分大小写的数据库中,您如何将其编写为不区分大小写?
Where Name like '%hospitalist%'
Run Code Online (Sandbox Code Playgroud) 我开始了一份新工作,它涉及到一堆大数字。有没有一种简单的方法可以在intordecimal字段中添加逗号以使其可读?
例如,SQL Server 输出左侧的列,但为了我自己的理智,我需要它看起来像右侧的列:
2036150 -> 2,036,150
Run Code Online (Sandbox Code Playgroud)
...或者我必须写一些令人发指的
left(right(vandalized_data),6),3) + ',' + right(left(vandalized_data),6),3)
Run Code Online (Sandbox Code Playgroud)
功能?
完美的东西是显示网格中的逗号,然后是输出中的纯整数。
我想问微软:
根据页面所连接的服务器对 SSMS 中的页面进行颜色编码
查询结果返回时让它运行。
问题:您如何要求这些功能?
我有一堆财务报告,我们希望能够将两个输入(年和季度)作为变量传递给它们。
我是这样做的,但我真的不喜欢它:
declare @quarter int,
@year int,
@date date
set @quarter = 4
set @year = 2018
set @date = cast(@year as varchar(4)) + '-01-01'
set @date = dateadd(quarter, @quarter - 1, @date)
print @date
Run Code Online (Sandbox Code Playgroud)
问题从整数输入重建日期的最佳方法是什么?
想要的结果:
2018-10-01
Run Code Online (Sandbox Code Playgroud) 如果它很愚蠢并且有效,那它仍然是愚蠢的。
关于 GDPR 的喧嚣让我思考 - 如果您必须进行备份并修改/删除数据,您会怎么做?破解打开 .bak 文件对我来说听起来很难。但是打开一个 .txt 文件很容易。
我可以将我的数据库备份到文本文件中,从而更轻松地从备份中删除历史记录吗?
例如,如果我使用 name 创建视图'4aii',为什么 SQL Server 关心它以 开头4?我可以打电话给桌子Fouraii或IVaii。
此外,[]在幕后做什么以允许将任何字符串用作名称?
一根绳子就是一根绳子,amirite?
我正在处理一项 etl 任务,该任务从一个模式中获取表(没有约束)并将它们插入到相同的表中(加上约束)。
我不想打出无数的插入语句,所以我写了一些如下所示的动态 sql:
declare @table varchar(255),
@stgtable varchar(255),
@columns varchar(max),
@sql nvarchar(max)
declare c cursor for
select table_name from INFORMATION_SCHEMA.tables
open c
fetch from c into @table
while @@FETCH_STATUS = 0
begin
set @stgtable = replace(right(@table, len(@table) - 1), 'LZSTG','STG')
--print @stgtable
select @columns = stuff( (
select ', ' + Column_Name from information_schema.columns
where Table_Name = @table
for xml path ('')),1,2,'')
--print @columns
begin try
set @sql = 'truncate table ' + @stgtable
exec sp_executesql @sql
set …Run Code Online (Sandbox Code Playgroud) 我有一个简单恢复模式的大型数据库(供应商要求),花了 3 天时间将其备份到新托管公司的服务器。
第三天早上,由于事务日志已填满其驱动器,DB 下线。
我的理解是 SQL Server 将开始回收空间。更有趣的是,在我给它更多空间之前,我认为数据库不会再次开始工作——它在备份完成后仍然被破坏。不过,我没有花时间进行正确的调试,所以我不知道为什么会卡住。
问题:为什么 SQL Server 在 Simple Recovery 中不能在备份时回收其事务日志?
我有一堆简单的 SSIS 包,可以将 SQL 数据输出到 excel,然后我重命名文件并将它们移到最终用户。
他们中的一些人使用带有空格的文件路径,他们对使用新文件夹并不感兴趣。这是我正在使用的代码:
declare @date varchar(25),
@sql varchar(1000)
set @date = cast(datepart(month, current_timestamp) as varchar(2)) + '_' + cast(datepart(day, current_timestamp) as varchar(2)) + '_' + cast(datepart(year, current_timestamp) as varchar(4))
print @date
set @sql = 'copy D:\Data\ED_72.xlsx \\ehsintra3\ED_72_weekly\ED_72_' + @date + '.xlsx';
print @sql
exec xp_cmdshell @sql
Run Code Online (Sandbox Code Playgroud)
但如果没有下划线,它就无法工作。
问题如何在没有下划线的情况下进行这项工作?
sql-server ×8
backup ×1
collation ×1
command-line ×1
export ×1
identifier ×1
like ×1
scripting ×1
ssis ×1
ssms ×1