对象资源管理器窗口在SQL Server Management Studio 2008中跨屏幕移动.
如何在SSMS 2008中的左侧显示对象资源管理器窗口?
对于模糊的标题感到抱歉,但我不确定如何解释我想要在句子中做什么.
序言:用于选择布尔列的SQL语法如下:
SELECT MyBooleanColumn FROM MyTableThatHasABooleanColumn
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果:
MyBooleanColumn
===============
1
1
1
0
1
...
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法获得以下结果?
MyBooleanColumn
===============
True
True
True
False
True
...
Run Code Online (Sandbox Code Playgroud) 我使用SQL Server 2008 R2作为数据库引擎.通过我的MSDN订阅,我可以使用SQL Server 2012进行开发.由于我注意到2012 SSMS中有一些很酷的东西,我的问题是,如果我只使用2012 SSMS并将2008 R2保留为数据库引擎,那么脚本的生成或任何其他效果会有什么不同吗?
谢谢.
更新1:哦,是的,我看到了这个页面:SQL Server数据库引擎向后兼容性,但它并不完全是我想要的.
我有桌子:
Users{UserId ...}
Professors{UserId ...}
Run Code Online (Sandbox Code Playgroud)
我UserId在两个表中都设置为PK并且建立了1:1的关系.
但是,如果我尝试插入新用户,它不起作用,因为它也需要在Professor表中插入.
我想让一个用户在教授表中只能有1条记录,但我也想让它不必存在于教授表中(我不想让所有用户教授:)).
如何在SQL Server Management Studio中设置1到(0 ... 1)的关系?
我知道set强制关键约束NO不是解决方案:)
我正在从头开始学习MS SQL,我正在尝试在我的表上创建一个连接但是我的查询有问题:
SELECT * FROM Users.[User] JOIN Users.[User] as u ON (u.id = Users.[UserAddress].user);
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'user'.
Run Code Online (Sandbox Code Playgroud)

怎么了 :)?
我@ColumnnName在T-SQL 用户定义函数中有一个变量,它基本上包含列Name.
例如 :
declare @ColumnnName= 'firstName'
Run Code Online (Sandbox Code Playgroud)
这意味着我的表中有一个名为Column的列,firstName并且此列名存储在名为的变量中@ColumnnName.
我有这样的查询:
Insert into @Temp([Row], VarLength) select Rowid, LEN(@ColumnnName) from Patients
where
/
*rest of code
*/
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,LEN(@ColumnnName)将返回9firstName的长度而不是firstName列中包含的值.
如何获取包含firstName列的值的长度,而不是字符串firstName本身的长度.
编辑:
完整查询是这样的:
Insert into @Temp([Row], Counts, VarLength) select Rowid, @counter, LEN(@ColumnnName) from Patients where
(case when @ColumnnName = 'firstname' then firstname
when @ColumnnName = 'middlename' then middlename
when @ColumnnName = 'lastname' then lastname
when @ColumnnName = 'State' then [State]
when @ColumnnName = 'City' …Run Code Online (Sandbox Code Playgroud) 我正在处理一个应返回ao或1的过程,具体取决于参数计算的结果(用于询问数据库中2个表的参数).
当我在查询窗格中执行该代码时,它会为我提供我期望的结果.代码看起来像:
SELECT TOP 1 state, updDate INTO #history
FROM [xxx].[dbo].[ImportHystory] WHERE (db = 'EB') ORDER BY addDate DESC;
IF (SELECT state FROM #history) = 'O'
BEGIN
SELECT TOP 1 * INTO #process_status
FROM yyy.dbo.process_status WHERE KeyName = 'eb-importer';
IF(SELECT s.EndDate FROM #process_status s) IS NOT NULL
IF (SELECT s.EndDate FROM #process_status s) > (SELECT h.updDate FROM #history h)
BEGIN
IF (SELECT MessageLog from #process_status) IS NOT NULL SELECT 1;
ELSE SELECT 0;
END
ELSE
SELECT 1;
ELSE
SELECT 1; …Run Code Online (Sandbox Code Playgroud) 我使用返回的参数来显示bin的重量.
这是我的SQL Server存储过程;
ALTER PROCEDURE [dbo].[SumScrapBinWeight]
@ScrapBinNumber INT,
@ScrapBinWeightSUM DECIMAL(8,2) OUTPUT
AS
BEGIN
SELECT @ScrapBinWeightSUM = SUM(CalculatedWeightLbs)
FROM ScrapData
WHERE ScrapBinNumber = @ScrapBinNumber
END
Run Code Online (Sandbox Code Playgroud)
这在SSMS中工作并返回预期值,当我在C#应用程序中调用它时,我收到错误
施放无效
在最后一行.这让我感到困惑,如果我Decimal改为Int,它不会抛出错误,但它不会显示我想要显示的小数.
using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MfgDataCollector"].ToString()))
{
DynamicParameters param = new DynamicParameters();
param.Add("@ScrapBinNumber", lbl_TicketNumber.Text);
param.Add("@ScrapBinWeightSUM", dbType: DbType.Int32, direction: ParameterDirection.Output);
conn.Execute("SumScrapBinWeight", param, commandType: CommandType.StoredProcedure);
lbl_BinWeight.Text = param.Get<decimal>("@ScrapBinWeightSUM").ToString();
}
Run Code Online (Sandbox Code Playgroud)
我在哪里错了?
因此,在测试某些代码时,我发现粘贴在查询窗口中的代码行为异常。以下是我从哪里获得代码的简化示例:
declare @a nvarchar(max) = '';
select @a = 'select ' + cast(n as char(1)) + ';' + char(13) + 'GO' + char(13) from nums where n = 1;
print @a
exec sp_executesql @a
Run Code Online (Sandbox Code Playgroud)
这是在SSMS的查询窗口中执行的。当然,它会出错,因为该GO分隔符在动态SQL中不起作用。
但是,只是为了确认代码本身是否正确,我将其复制到了新的查询窗口中。继续示例:
select 1;
GO
select 1
GO
Run Code Online (Sandbox Code Playgroud)
第一条语句给出语法错误,第二条语句将GO视为列别名。有趣的是,如果我只是直接在该查询窗口中键入代码,这仍然是正确的。它并没有影响其他窗口或新窗口,只是我将PRINT结果粘贴到的窗口中。
关于这一点的最后一个有趣的事实是,如果LEN()将上面的示例在“错误”查询窗口中与在可正常工作的查询中进行比较,则“错误”查询的长度为26个字符,但正常情况下为31个字符。
我发现退格所有字符似乎无济于事,但是如果我执行全选并删除操作,似乎可以解决此问题。我认为这意味着它将得到一个不可打印的字符,但是如果我执行“全选”并使用“显示所有符号”选项复制到Notepad ++中,则看不到任何注意事项。
有谁知道为什么SSMS会有这种行为?我正在使用版本17.9(如果有问题,请针对SQL Server 2014实例运行)。