我不断得到max recursion error这个查询.
起初我以为是因为返回null然后它会尝试匹配导致错误的空值,但是我重写了我的查询,因此不返回空值并且仍然会发生错误.
什么是重写此函数的最佳方法,以便不会发生错误
WITH EmployeeTree AS
(
SELECT
EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid,
CASE Employees.APV_MGR_EMP_ID
WHEN Null THEN '0'
ELSE Employees.APV_MGR_EMP_ID
END as ApprovalManagerId
FROM
dbo.[tEmployees] as Employees WITH (NOLOCK)
WHERE
APV_MGR_EMP_ID = @Id
and Employees.APV_MGR_EMP_ID is not null
and Employees.EMP_SRC_ID_NR is not null
UNION ALL
SELECT
EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid,
CASE Employees.UPS_ACP_EMP_NR
WHEN Null THEN '1'
ELSE Employees.UPS_ACP_EMP_NR
END as ApprovalManagerId
FROM
dbo.[tEmployees] as Employees WITH (NOLOCK)
WHERE
UPS_ACP_EMP_NR = @Id
and Employees.APV_MGR_EMP_ID is not null …Run Code Online (Sandbox Code Playgroud) 我遇到了一些僵局.我有一些由一些C#代码生成的查询.查询在Microsoft SQL Server Management Studio针对同一数据库运行时工作正常.
但是,当我的代码尝试运行相同的查询时,我得到关于无效列的相同错误,并抛出异常.引用此列的所有查询都失败.
最近将该列添加到数据库中.这是一个名为的日期列Incident_Begin_Time_ts.
失败的一个例子是:
select * from PerfDiag
where Incident_Begin_Time_ts > '2010-01-01 00:00:00';
Run Code Online (Sandbox Code Playgroud)
其他查询Select MAX(Incident_Being_Time_ts);在代码中运行时也会失败,因为它认为列缺失.
有任何想法吗?
我有SQL Server 2008,SQL Server Management Studio.
我需要从Table1database1中选择数据.然后我必须在结果和insert values into Table1database2中编辑一些值.
或者让我用其他方式.
如何将一个表中的数据转换为insert script.
我无法启动SQL Server browser的SQL Service Configuration Manager 2008版本.绝对没有选项来启动该服务.它已被禁用,如下图所示.我该如何重新启动服务?

使用SQL Server 2008,我有一个用于创建视图的查询,我试图显示一个月的名称而不是整数.
在我的数据库中,datetime它位于一个名为的列中OrderDateTime.返回日期的查询中的行是:
DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
Run Code Online (Sandbox Code Playgroud)
这将返回一列年份和一列月份作为整数.我想返回月份名称(Jan, Feb, etc).我试过了:
CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth
Run Code Online (Sandbox Code Playgroud)
这显然是不正确的,因为我得到了
'AS'附近的语法不正确
信息.我的查询的正确语法是什么?
我想B在我的下面的SQL中显示该列,但是当我将它添加到查询时它会给我以下错误:
列T2.B'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
我的代码:
SELECT A, COUNT(B) as T1, B
FROM T2
WHERE ID=1
GROUP BY A
Run Code Online (Sandbox Code Playgroud) 如何在MS-SQL Server 2008 R2中获取当前日期?
我的数据库中列的格式是DATETIME,日期以以下格式存储:
+++++++++++++ Vrdate ++++++++++
| |
| 2012-11-18 00:00:00.000 |
| 2012-11-19 00:00:00.000 |
| 2013-11-18 00:00:00.000 |
| 2012-12-01 00:00:00.000 |
| 2010-10-09 00:00:00.000 |
| 2012-11-11 00:00:00.000 |
| |
+++++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)
我搜索但无法找到以这种格式获取日期的方式(即哪个时间与之相关00:00:00.00).我找到了GETDATE()函数但是它提供了当前时间以及日期,我想要的是以下列格式获取日期:CurrentDate 00:00:00.00
我怎么能得到这个?
有没有办法Now()在SQL中使用函数来选择具有今天日期的值?
我在印象中Now()会包含时间和日期,但今天的日期会有时间设置00:00:00,因此这永远不会匹配?
我想使用以下模板:
-- =================================================
-- Create User as DBO template for SQL Azure Database
-- =================================================
-- For login <login_name, sysname, login_name>, create a user in the database
CREATE USER <user_name, sysname, user_name>
FOR LOGIN <login_name, sysname, login_name>
WITH DEFAULT_SCHEMA = <default_schema, sysname, dbo>
GO
-- Add user to the database owner role
EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>'
GO
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为user1的用户,密码为'user1pass'.我连接了我的默认数据库'authentication',我打开了一个查询窗口.
但模板对我来说没有意义.例如什么是sysname,我在哪里提供密码以及我应该使用什么作为default_schema?
特定用户需要有能力做所有事情.但是如何设置它以便他可以做任何事情,如果我让用户成为数据库所有者,那该怎么办呢?
到目前为止,我尝试过:
CREATE USER user1, sysname, user1
FOR LOGIN user1, sysname, user1
WITH DEFAULT_SCHEMA = dbo, sysname, dbo
GO …Run Code Online (Sandbox Code Playgroud) 我有一个表设置,目前没有主键.我需要做的就是添加一个primary key, no null, auto_increment.
我正在使用Microsoft SQL Server数据库.我知道它不能在单个命令中完成,但我尝试的每个命令都会返回语法错误.
编辑---------------
我创建了主键,甚至将其设置为非null.但是,我无法设置auto_increment.
我试过了:
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
Run Code Online (Sandbox Code Playgroud)
我正在使用,NVARCHAR因为它不会让我NOT NULL在int下设置