SharePoint サイトからデータを取得する SQL CLR 関数を作成しました。これは SQL に戻る部分です。
public static void GetListItemInfo(
object obj,
out SqlString Name,
out SqlString SO,
out SqlString LineNumber,
out SqlString SerialNumber,
out SqlString Certificates,
out SqlString Tags,
out SqlString RevisionNumber)
{
DataRow r = (DataRow)obj;
Name = new SqlString(r["ows_LinkFilename"].ToString());
SO = new SqlString(r["ows_SO"].ToString());
LineNumber = new SqlString(r["ows_Line_x0020_Number"].ToString());
SerialNumber = new SqlString(r["ows_Unit_x0020_Number"].ToString());
Certificates = new SqlString(r["ows_Certificate_x0020_Type"].ToString());
Tags = new SqlString(r["ows_Tags"].ToString());
RevisionNumber = new SqlString(r["ows_Revision_x0020_Number"].ToString());
}
これらはすべて、SharePoint リストに存在する列名ですが、SQL から関数を実行すると、次のエラーが表示されます。
Msg 6260, Level 16, State 1, Line 1
An error occurred while getting new row from user defined Table Valued Function :
System.ArgumentException: Column 'ows_Line_x0020_Number' does not belong to table row.
System.ArgumentException:
at System.Data.DataRow.GetDataColumn(String columnName)
at System.Data.DataRow.get_Item(String columnName)
at SharePointToSQL.GetListItemInfo(Object obj, SqlString& SO, SqlString& LineNumber, SqlString& Tags)
しかし、「SO」列と「タグ」列だけを取得しようとすると、このエラーは発生しません。他のすべての列では機能しません。
更新: 「ows_SO」「ows_Sample」などの列を返すことができるが、「ows_Line_x0020_Number」のような列は返せないことがわかりました。列名を少し変更することで、やりたいことができます。しかし、「ows_Line_x0020_Number」のような列名を使用できない理由を誰か教えてもらえますか??