这是C#代码(VS2017)片段,用于从SQL Server数据库中检索列:
DataTable schemaColumns = connection.GetSchema("Columns", restrictionsColumns);
schemaColumns.DefaultView.Sort = "ORDINAL_POSITION ASC";
DataTable sortedDT = schemaColumns.DefaultView.ToTable();
foreach (System.Data.DataRow rowColumn in sortedDT.Rows) {
string dflt = rowColumn[5].ToString().ToLower();
我将数据库从SmarterASP(SMA)克隆到了Azure。当针对SMA DB运行代码时,将返回所有默认值。当为Azure DB运行它时,不会填充任何默认值。它们在每一列都是空白的。默认值在那里,并且可以在T-SQL中使用。 getSchema不会获取它们。为什么? dbForge显示数据库是相同的。该问题与Azure有关。
(部分找到答案。这与权限有关。如果仅使用db_datareader进行读取,则不会读取默认值...)