我有一个 SQL Server 从 SP 内的链接 Oracle 服务器获取数据。
在我的开发服务器上,EF6 坚持 SP 正在返回double其中一列的数据类型,但在 prod 中,它坚持同一列是decimal.
SQL Server 版本略有不同:
链接服务器的配置方式没有(明显的)差异(即我比较了 SSMS 中的连接属性)。
作为一个新功能,生产数据库在数据库中只有很少(零,偶数)行,而开发服务器有很多。我有一种感觉可能是相关的,因为我记得必须在开发过程中更改数据类型(尽管当时我并没有考虑太多)。
这里可能有什么问题?
需要转换的性别字段的数据类型为位。
我使用了这个语法:
Select case when CAST([GenderIsMale] AS bit)=1 then 'Male'
when CAST([GenderIsMale] AS bit)=0 then 'Female'
else CAST([GenderIsMale] AS bit)
end
Run Code Online (Sandbox Code Playgroud)
返回错误:
将 varchar 值 'Male' 转换为数据类型 bit 时转换失败。
在 SQL Server 数据库中存储和/或使用 XML 架构的真实生产环境示例是什么?
我正在按照 Microsoft 70-461 考试目标努力工作。我已经完成了 Microsoft 在https://technet.microsoft.com/en-us/library/ms176009(v=sql.110).aspx 上的数据库中创建和存储 XML 模式的 演练。
我还没有在应用程序将访问存储在数据库中的 XML 模式的数据库环境中工作。在生产 SQL Server 数据库中创建和存储 XML 架构的真实用例是什么?
我有一个查询,它几乎做我想做的。它正在添加前导零,但是当涉及到 7+ 长的东西时,它会将所有东西都变成 7 位数字。
Select RIGHT(rtrim('0000000' + cast(column as nvarchar)), 7) from table
Run Code Online (Sandbox Code Playgroud)
我只是觉得我的大脑不工作,我无法弄清楚这一点。谁能帮我这个?
例子:
324 -> 0000324 2232 -> 0002232 3324124 -> 3324124
我所要做的就是为小于 7 的任何内容添加 0。
列是nvarchar。
我有一个非常大的查询,它的运行速度比我想象的要慢,但是对查询执行计划的深入研究并没有帮助揭示这种缓慢。最终我缩小了范围:try_parse是罪魁祸首!
正常查询:
SELECT CloseDate
FROM MyTable
(4959 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 17 ms.
Run Code Online (Sandbox Code Playgroud)
使用 try_parse:
SELECT try_parse(CloseDate as datetime using 'en-us')
FROM MyTable
(4959 row(s) affected)
SQL Server Execution Times:
CPU time = 719 ms, elapsed time = 718 ms.
Run Code Online (Sandbox Code Playgroud)
后一种情况下的执行计划看起来很无辜:
有没有什么方法可以让我以后更容易地发现罪魁祸首?缓慢的实际来源完全隐藏在视线之外。
我是一名 SQL Server 意外 DBA,他继承了一些数据库,并试图设置基线阈值来监视这些服务器。
有谁知道解决这个问题的好方法?
我希望做的事情如下:我想在每个 SQL Server 实例上捕获不同的指标,这样当我们遇到问题时,我总是可以回到基线并查看它的变化之处。我想以此作为故障排除的起点。
我有一个数据表如下:
s_no amount
1 500
2 500
3 500
4 500
5 500
Run Code Online (Sandbox Code Playgroud)
我需要一个查询来根据 sum(amount) 找到 max(s_no) 例如,当 sum(amount)<=1600 时,我需要 4 作为结果。我可以通过使用游标获得所需的输出,但如果我可以使用查询会更容易。. 我尝试了如下查询:
SELECT MAX(s_no) from table HAVING SUM(amount)<=1600
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我将不胜感激任何形式的帮助。谢谢你。
我正在尝试将 MS SQL Server 2012 (sp3) 升级到 SQL Server 2014。
在升级结束时,几个组件失败并显示错误,
“错误详细信息:安装 SQL Server 数据库引擎服务实例功能时出错,无法创建新文件夹 'H:\MSSQL11_MSSQLSERVER_Backup_Dir'。指定的路径无效(例如,它位于未映射的驱动器上)。错误代码:0x84CF000E”
此服务器没有 H:\ 驱动器。据我所知,它从来没有H盘。我该如何纠正?
我正在尝试创建巨型脚本,通过添加/删除/修改现有数据库的列来更新一堆表。困扰我的一个问题是,每当我在一个语句的表中添加新列并尝试在另一条语句中引用它时,它都会失败并显示关于无效列 xxx 的错误。
以下是我用来重现此问题的伪代码,
--CREATE TABLE testTable (u_id int, u_name varchar(10))
--INSERT INTO testTable VALUES (1,'11')
--INSERT INTO testTable VALUES (2,'12')
--INSERT INTO testTable VALUES (3,'13')
--INSERT INTO testTable VALUES (4,'14')
--INSERT INTO testTable VALUES (5,'15')
BEGIN
ALTER table testTable ADD u_add varchar(10)
END
BEGIN
CREATE TABLE tmp_xx_xx_testTable (u_id int, u_name varchar(10), u_add varchar(10))
INSERT INTO dbo.tmp_xx_xx_testTable VALUES (6,'16','DDD' )
INSERT INTO tmp_xx_xx_testTable (u_id,u_name,u_add)
SELECT u_id,u_name,u_add FROM TestTable
drop TABLE TestTable
EXECUTE sp_rename
N'[dbo].[tmp_xx_xx_testTable]',
N'TestTable';
END
--SELECT * …Run Code Online (Sandbox Code Playgroud) 我们正在尝试清理我们 AlwaysOn 集群之一上的一些旧帐户。
这个特定的帐户拒绝玩好并允许自己被删除。
USE [master]
GO
DROP LOGIN [PROD\dba007]
GO
Run Code Online (Sandbox Code Playgroud)
错误:
Msg 15173, Level 16, State 1, Line 4
Server principal 'PROD\dba007' has granted one or more permission(s). Revoke the permission(s) before dropping the server principal.
Run Code Online (Sandbox Code Playgroud)
它抱怨的权限是对 HADR_ENDPOINT 的连接权限
Select perm.* from sys.server_permissions perm
INNER JOIN sys.server_principals prin ON perm.grantor_principal_id = prin.principal_id
where prin.name = N'PROD\dba007'
class class_desc type permission_name state state_desc
105 ENDPOINT CO CONNECT G GRANT
Run Code Online (Sandbox Code Playgroud)
现在下一个合乎逻辑的事情是撤销连接权限。
USE master;
REVOKE CONNECT ON ENDPOINT ::HADR_endpoint from [PROD\dba007]
Run Code Online (Sandbox Code Playgroud)
但这会产生消息 …
sql-server-2012 ×10
sql-server ×8
oracle ×1
performance ×1
permissions ×1
security ×1
t-sql ×1
xml ×1