我想在我的数据库中通过脚本创建新函数。脚本代码如下:
IF Exists(Select * From sys.sysobjects A Where A.name =N'fn_myfunc' and xtype=N'FN') return;
CREATE FUNCTION fn_myfunc ()
returns varchar(10)
AS Begin
...
End
Run Code Online (Sandbox Code Playgroud)
但是当我执行上面的脚本时,SQL Server 返回一个错误:
'CREATE FUNCTION' must be the first statement in a query batch.
Run Code Online (Sandbox Code Playgroud) 我一直在研究 T-SQL 中的代码,以使用 msdb 数据库中的 sp_add_jobschedule proc 向 SQL 代理作业添加新计划。当我添加新计划(通常在特定日期/时间运行一次)并立即查看 sysjobschedules 和 sysschedules 中的值时,我可以看到新计划已添加并与我的 SQL 代理的 job_id 相关联工作。但是,next_run_date 和 next_run_time 的值在其中为 0。当我在 2 或 3 分钟后再次查看它们时,它们仍然显示为 0。但是,当我再过 5 或 10 分钟后再回来时,它现在可以正确显示与下一次计划运行相对应的日期和时间值。
所以我的问题是:
我用来添加新计划的代码示例:
exec msdb.dbo.sp_add_jobschedule @job_id = @jobID
, @name = @JobName
, @enabled = 1
, @freq_type = 1
, @freq_interval = 0
, @freq_subday_type = 0
, @freq_subday_interval = 0
, @freq_relative_interval = 0
, @freq_recurrence_factor = 0
, @active_start_date = …Run Code Online (Sandbox Code Playgroud) 为什么 SQL Server 在运行使用子查询的查询时使用并行性,但在使用连接时不使用并行性?加入版本串行运行,需要大约 30 倍的时间才能完成。
加入版本:~30secs

子查询版本:<1 秒

编辑: Xml 版本的查询计划:
当我查看时sys.sql_logins,我看到一个名为is_policy_checked. 我可以相信我的密码策略已经针对此列值所在的所有登录名进行了检查1吗?
在管理工作室中单击“使数据库脱机”后,如果单击关闭,此消息将保持挂起并且不会关闭。
在管理工作室处理此类卡住工作的好方法是什么?你能通过活动监视器杀死他们吗?我应该寻求什么过程阻止这项工作通过并终止它?
当我写这样的查询时......
select *
from table1 t1
join table2 t2
on t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)
SQL 优化器,不确定这是否是正确的术语,是否将其转换为...
select *
from table1 t1, table2 t2
where t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)
本质上,SQL Server 中的 Join 语句只是一种更简单的编写 sql 的方法吗?或者它实际上是在运行时使用的?
编辑:我几乎总是,而且几乎总是,使用 Join 语法。我只是好奇会发生什么。
我正在查看计划缓存,寻找低悬的优化成果,并发现了以下代码段:

为什么很多费用都在 100% 以上?那应该是不可能的吧?
使用 SQL Server 导入和导出向导,我收到此错误:
错误 0xc0202009:数据流任务 1:SSIS 错误代码 DTS_E_OLEDBERROR。
发生 OLE DB 错误。错误代码:0x80004005。
由于文件组“PRIMARY”中的磁盘空间不足,无法为数据库“database”分配新页。通过删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间。
我正在尝试上传一系列 2GB 文件,在加载第 4 个文件时,即使在我转到数据库属性 > 文件并将文件组的自动增长更改为 2500 MB 和 maxsize 无限制后,我仍然继续收到上述错误消息。
最好的解决方法是什么?这些数据最终将占用大约 60-80GB。
我在 Postgresql 中有一个数据库,它是从 SQL Server 迁移过来的(只有数据)。
在 SQL Server 上,此数据库中的表具有以下列:
measure_id
datum
measure
Run Code Online (Sandbox Code Playgroud)
其中measure_id是自动增量主键,datum是日期时间,measure是浮点数。
在 Postrgresql 中迁移后,measure_id是 bigint 类型的列。
measure_id既然我的表充满了数据,我该如何将此列 ( )更改为 bigserial 并将其指定为主键?
我正在编写一个程序,需要我分配所有权限和代码中的所有内容。我被困在这部分:

我只想为 msdb 数据库单击“映射”下的小框并将该用户分配给 SqlAgentUser 角色。我需要一个能够添加/编辑 SQL Server 代理作业的用户。我可以使用 SSMS 获得正确的设置,但我一生都无法弄清楚如何在原始 SQL 中进行设置。
我已经查看了ALTER LOGIN,但没有看到任何可以满足我需要的东西。我怀疑我只是不知道 Google 的正确术语。我一般不会做这种事。
任何帮助深表感谢!
sql-server ×9
t-sql ×3
join ×2
logins ×2
security ×2
ssms ×2
ddl ×1
functions ×1
migration ×1
optimization ×1
password ×1
postgresql ×1
subquery ×1