我在 SQL Server Management Studio 中输入以下命令
insert into testtable ([product_name], [price], [expire_date], [expire_time])
values ('Teapot', 10.00, 23/12/2012, '12:35:00')
Run Code Online (Sandbox Code Playgroud)
它产生这个错误:
操作数类型冲突:int 与日期不兼容
这些是列:
Column name | datatype
----------------+---------------
product_name | varchar(30)
price | money
expire_date | date
expire_time | time(7)
Run Code Online (Sandbox Code Playgroud) 我继承了一台带有 SQL Express 2008 现有实例的 Windows 7 Professional 电脑。我在机器上拥有本地管理员权限。我不知道 SA 密码。我无法创建数据库或登录名,也无法修改 SA 登录名的密码。我想授予我的域帐户 SYSAdmin 权限。
我尝试了以下方法,在这两种情况下,我都右键单击并以管理员身份运行 SQL management studio,并使用 Windows 身份验证登录到本地 SQL express。
我创建了一个具有管理员权限的本地管理员帐户,并以此身份登录到我的 PC。我已以域管理员身份登录到我的 PC。
我明白,如果我使用 Windows 身份验证以管理员身份登录,我应该拥有完全权限,什么会阻止我获得此访问权限?
可能重复:
Sql Server 代理无法启动
我无法启动SQL Server Agent (SQLEXPRESS)实例,因为它会给我这个错误:
The request failed or the service did not respond in a timely fashion. Consult the event log or other applicable error logs for details
我搜索了一些解决方案,他们说我应该删除 SQL Server 2008 Express Edition。但是,我没有 SQL Server 2008 Express Edition,因此没有安装它。
另外,我注意到另一个SQL Server Agent (MSSQLSERVER),我可以在其中启动它并让它运行。但是,我尝试使用我的本地帐户甚至sa帐户,我无法进入此实例。(SQL Server (MSSQLSERVER)也在跑)
那么,我可以知道我错过了什么吗?
我在开发服务器上有我的 prod 数据库的副本。我正在使用它来测试部署脚本。
但是当我运行它时,它说日志文件已满。
我查了一下,它是 10 GB(几乎是整个数据库的大小)。
我不需要这个数据库,但需要几个小时(之后它将被删除)。
有没有办法优雅地摆脱日志文件?(直接删除它似乎是错误的。)
注意:
我已经运行了这个:
select log_reuse_wait, log_reuse_wait_desc, name
from sys.databases
where name = 'ProdCopyDatabase'
Run Code Online (Sandbox Code Playgroud)
结果是:
log_reuse_wait log_reuse_wait_desc name
2 LOG_BACKUP ProdCopyDatabase
Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server sql-server-2008-r2 transaction-log
Microsoft SQL Server 2008 (SP3) - Windows NT 6.1(内部版本 7601:Service Pack 1)上的 10.0.5500.0 (X64) 网络版(64 位)
我有一个ASPState在线数据库,它的日志文件ASPState_log正在急剧增长。当前大小为 536GB。
如何维护此日志文件?
我通过 SQL Agent 作业进行每日备份。我可以截断日志吗?
控制日志文件大小的最佳做法是什么?
我有一个查询,用于填充聚合表以进行报告。该查询来自我工作的公司的另一位开发人员,但我的工作是使其快速运行。到目前为止,我所有的早期尝试都失败了。我已经用这个查询尝试了几件事,这就是我目前所处的位置。我已经减少了大约半小时的加载时间,但我被卡住了,我想我可能只需要重新做整个事情。我希望这里有人能看到我遗漏了什么,并就如何解决这个查询给我一些指示。
SELECT P.CompanyID,
P.CompanyName,
P.StoreID,
P.StoreName,
P.ReportDate,
Isnull((SELECT Sum(FT.GrossSales - Isnull(FP.PaymentAmount, 0)) AS PullNet
FROM FactSalesTransaction AS FT
LEFT JOIN (SELECT TransactionID,
DimStoreID,
DimBusinessDateID,
Sum(PaymentAmount) AS PaymentAmount
FROM FactSalesPayment
WHERE DimPaymentTypeID <> 2
AND ModStatusFlg <> 'D'
GROUP BY TransactionID,
DimStoreID,
DimBusinessDateID) AS FP
ON FP.TransactionID = FT.TransactionID
AND FP.DimStoreID = FT.DimStoreID
INNER JOIN DimCalendar AS C
ON FT.DimBusinessDateID = C.DimCalendarID
AND FP.DimBusinessDateID = C.DimCalendarID AND C.CalendarDate >= '12/4/2012'
WHERE FT.DimStoreID = P.DimStoreID
AND FT.DimBusinessDateID = P.DimBusinessDateID
AND FT.ModStatusFlg <> …Run Code Online (Sandbox Code Playgroud) 这是否有可能让 SQL Server 2008 发布者与 SQL Server 2012 订阅者进行合并复制?
replication sql-server-2008 sql-server-2012 merge-replication
我有一个小问题...
我有这个案例:
2个服务器实例
2 数据库
1 表(5 列)
我从服务器 1创建了发布来复制我在DB1 中的所有表列。
从服务器 2我创建订阅以从DB1 中的表中提取所有列。
但是现在,我需要将同一表的一列从服务器 2 发布到服务器 1,并且它必须在同一个数据库中...
我尝试使用逻辑并为服务器 2创建发布并在服务器 1上订阅,但出现错误:
您已选择发布者作为订阅者并输入与发布数据库相同的订阅数据库。选择另一个订阅数据库。
I need it to be A to B and B to A replication
Run Code Online (Sandbox Code Playgroud)
我希望有人理解我的问题并为我解答。
ps 如果您需要,请询问更多信息...
我有一个数据库的完整备份,我想从旧备份更新当前数据库中某个表中的一些记录,而不影响其他记录。
做这个的最好方式是什么?
基本上我想从旧备份中获取一些记录将旧值更新到当前数据库而不进行恢复,我有什么选择?
我有一个相对较大的表,它以一种方式访问,正好通过一个查询(在读取端)。
查询按两列(均为bit)过滤表,并按第三列(整数)排序。请注意,查询命名列(它实际上不使用“*”)。“TOP 1000”是有意的,是生产查询的一部分:
生成了查询——不知道为什么它会以这种方式生成。
SELECT TOP 1000
*
FROM
MyTable m
WHERE
m.IsFlag1 != 1
AND m.IsFlag2 != 1
ORDER BY
m.SomeId
Run Code Online (Sandbox Code Playgroud)
我有一个覆盖索引,主列是IsFlag1和IsFlag2。
执行计划显示并在此索引上查找索引,然后进行排序。根据执行计划,排序占查询成本的 97%。
我尝试添加SomeId为索引的主列(第三列),但执行计划保持不变。
然后我尝试添加一个仅使用 SomeId 作为主列的覆盖索引,保留原始索引。执行计划然后对新查询进行索引扫描,操作成本显着降低(并且在功能上更快)。
说了这么多,我想尽可能地优化这个查询。有没有办法修改索引,以便它简单地进行查找?