我允许最终用户定义查询返回的行数(SELECT TOP (@x))。是否有可以在返回所有行的地方输入的值?或者,如果他们想要返回所有行,我是否必须在没有 TOP (@x) 的情况下动态创建查询?
我正在使用 SQL Server 2012。
我正在尝试读取 winforms C# 应用程序中表和列的扩展属性。我正在使用 SQL Server SMO 来执行此操作。当我执行应用程序时,它看不到扩展属性,但是当我使用 PowerShell 读取扩展属性时,它确实看到了扩展属性。
C# 代码:
var x = col.ExtendedProperties.Count;
var NPI = col.ExtendedProperties["NPI"].Value;
bool npi = bool.Parse(NPI.ToString());
Run Code Online (Sandbox Code Playgroud)
PowerShell 代码:
Add-Type -AssemblyName "Microsoft.SqlServer.Smo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $env:COMPUTERNAME
$server.Databases["<db name>"].Tables["<table name>"].Columns["<column name>"].ExtendedProperties | Select Name, Value, State
Run Code Online (Sandbox Code Playgroud)
我已经检查过,Visual Studio 和 PowerShell 都使用相同版本的 SMO (11.0.0.0)。当我执行 C# 代码时 col.ExtendedProperties.Count = 0,但是当我执行 PowerShell 代码时,我得到:
Name Value State
---- ----- -----
NPI False Existing
Run Code Online (Sandbox Code Playgroud)
有没有人对为什么会发生这种情况有任何想法?
在 C# 代码中,我使用以下方法在表上打开了一个 DataReader:
sourceServer.ConnectionContext.ExecuteReader(<select command>)
Run Code Online (Sandbox Code Playgroud)
从表中检索数据。然后我使用 DataReader 进入一个 …