所以我现在整天都在和这个问题作斗争.起初我认为必须使用我的调用代码,即使这一切看起来都不错.调用代码只是来自VB代码隐藏文件的标准调用,并且无论如何都没有链接到数据绑定.我提到这一点,因为我已经看到很多其他人因为DataGrids等而遇到了这个问题.
然后我转到数据库本身并手动执行该过程,它在SQL Sevrer Manager中给出了相同的错误.我已经尝试删除程序并重新创建它,甚至从头开始重写它仍然会发生.我也尝试从@Password参数中删除默认的NULL值,但仍然没有更改.
我正在运行SQL Server 2008 R2
这是程序代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_AddUser]
@Username varchar(50),
@Fullname varchar(50),
@Password varchar(50) = NULL,
@Datecreated DateTime,
@RoleID int,
@ResetPwd bit,
@Email varchar(50),
@locked bit,
@Sign varchar(max),
@Sysuser bit
AS
BEGIN
INSERT INTO users (
user_name,
full_name,
password,
datetime_created,
role_id,
password_reset,
email_address,
locked,
email_signature,
asrsys_user)
VALUES (
@Username,
@Fullname,
@Password,
@Datecreated,
@RoleID,
@ResetPwd,
@Email,
@locked,
@Sign,
@Sysuser)
END
Run Code Online (Sandbox Code Playgroud) 如果我运行此查询以获取登录到每台计算机的用户列表:
SELECT
T0.Computer,
T4.[User],
T4.[Last Modified]
FROM Table1 T0
LEFT OUTER JOIN Table4 T4 ON T0.Guid = T4.Guid
Where T4.[Last Modified] >= getdate()-30 -- Logged in the last 30 days
ORDER BY T4.[Last Modified] DESC
Run Code Online (Sandbox Code Playgroud)
我明白了:
Computer User Last Modified
-------- ----- --------------
Comp1 UserA 2013-07-14 16:31:59.000
Comp1 UserB 2013-06-03 13:43:32.000
Comp1 UserC 2013-04-28 15:58:22.000
Comp2 UserD 2013-04-28 11:10:21.000
Comp2 UserE 2013-04-19 15:01:33.000
Comp3 UserF 2013-04-18 08:01:03.000
Run Code Online (Sandbox Code Playgroud)
我想显示MAX([Last Modified])以仅显示登录到每台计算机的最后一个用户:
Computer User
-------- -----
Comp1 UserA
Comp2 UserD
Comp3 UserF
Run Code Online (Sandbox Code Playgroud)
说SELECT …
我有一个表存储某些表的名称 - tableNames.我想在其中一些表上运行DELETE语句(删除它们所代表的表中的所有行,而不是从tableNames中删除它们).我以为我可以做到
DELETE FROM (SELECT tableName FROM tablesNames WHERE ...) AS deleteTables
Run Code Online (Sandbox Code Playgroud)
但我不断收到错误的语法错误.我还想过迭代WHILE循环中的表并使用变量存储,但我希望有更简单的方法.具体来说,这适用于Microsoft SQL
timestampSQL Server 2008 R2 中有一列包含列.当我只将这个列添加到我的表时,我看到这样的值0x00000000000007D1.我尝试将数据放入其中:
UPDATE test_time SET date3=
CONVERT(TIMESTAMP, CONVERT(datetime,'2002-08-20 14:00:00.000',120))
WHERE ogr_fid=1
Run Code Online (Sandbox Code Playgroud)
但得到错误
无法更新时间戳列
这有什么不对?
使用以下结果集:
| DATE | BUSINESS | COLLEAGUE | POSITION | HOURS | STANDARDHOURS | COUNTER | OVER16 | OVER32 | OVER48 | ----------------------------------------------------------------------------------------------------------------- | 2013-01-01 | a | bob jones | analyst | 168 | 168 | 1 | 0 | 0 | 0 | | 2013-01-01 | a | cindy jones | assistant | 184 | 168 | 1 | 1 | 0 | 0 | | 2013-01-01 | b | tim harris | programmer | 200 | 168 …
我尝试在SQL中记录每一个东西,所以想想添加一个名为的表log并添加其中的每一个东西,log表是:
ID UNIQUEIDENTIFIER - PKLogDate DATETIME PKIP NVARCHARAction NVARCHARInfo XMLUniqueID BIGINT我记录了以下所有内容:登录,检查权限,查看页面,访问对象和..到此表
然后我想还需要一些Log-Restore 实现,所以有些日志记录是可恢复的,有些不是,Log表有大约8百万条记录,但是可恢复的记录大约有2万条,所以每次我们需要恢复时,需要选择8百万,然后我决定添加新表和添加可恢复日志到这个新表log_restore:
ID 唯一标识符LogDate 约会时间 IP NVARCHARAction NVARCHARInfo XMLUniqueID BIGINT - PK好的,当我需要记录每件事情都没问题.
但是当我需要查看日志时:该过程从log表中获取所有记录并将它们与log_restore表合并(联合).
所以我需要加速这个过程而不影响插入(意味着不要慢),这是我的想法:
添加记录时也log_restore将其添加到log表中(因此在选择时无需联合)
使用此select命令创建视图
添加简单数据类型列而不是XML
在简单的DataType Column Like上添加Clustered PK BIGINT
你有什么想法?有什么建议吗?
我写了一个查询来对税项进行分组,如果税是空的,我不想显示税名.这该怎么做?请检查我的sql server语句:
SELECT
'CENTRAL EXCISE DUTY' AS 'TaxName',
SUM(TaxAmount) AS 'Tax'
FROM
PMT_InvoiceTaxAttribute
WHERE
InvoiceID = 100
AND TaxAttributeName NOT LIKE '%IBR%'
AND TaxAttributeName NOT LIKE '%CST%'
AND TaxAttributeName NOT LIKE '%VAT%'
UNION
SELECT
'CST' AS 'TaxName',
SUM(TaxAmount) AS 'Tax'
FROM
PMT_InvoiceTaxAttribute
WHERE
InvoiceID = 100
AND TaxAttributeName LIKE '%CST%'
UNION
SELECT
'VAT' AS 'TaxName',
SUM(TaxAmount) AS 'Tax'
FROM
PMT_InvoiceTaxAttribute
WHERE
InvoiceID = 100
AND TaxAttributeName LIKE '%VAT%'
Run Code Online (Sandbox Code Playgroud)
此Query为Output提供如下:
TaxName Tax
------------- -----------
CENTRAL EXCISE DUTY 15000
CST NULL
VAT …Run Code Online (Sandbox Code Playgroud) 我试图基本输入一年(不是整个日期)来取回一组结果,这些结果将告诉我今年销售的东西数量.不过我不知道怎么做.下面是我所拥有的一个例子.
ALTER PROC OrderYear
(@OrderYear datetime)
AS
SELECT Orderdate as [Year],COUNT(SalesOrderID) as Count
FROM Sales.SalesOrderHeader
WHERE @OrderYear=YEAR(OrderDate)
GROUP BY OrderDate
BEGIN
SET NOCOUNT ON
END
EXEC OrderYear '2005'
Run Code Online (Sandbox Code Playgroud) sql-server parameters datetime stored-procedures sql-server-2008-r2
我刚刚从SQL Server 2008 R2升级到SQL Server 2012,但在打开SQL Server Management Studio并检查服务器版本时,(Help | About)它仍显示2008 R2.

升级似乎工作正常,但我是否必须重新安装SQL Server 2012?
sql-server ×8
sql ×7
bids ×1
datetime ×1
excel-2007 ×1
group-by ×1
parameters ×1
select ×1
sql-like ×1
ssis ×1
t-sql ×1
timestamp ×1