Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hazırlanmış bir ifadenin alanları için meta verileri alır. Bir beyanname hazırlama hakkında bilgi için sqlsrv_query veya sqlsrv_prepare'a bakınız. sqlsrv_field_metadata, herhangi bir hazırlanmış ifadede, uygulama öncesi veya sonrası olarak çağrılabileceğini unutmayın.
Syntax
sqlsrv_field_metadata( resource $stmt)
Parameters
$stmt: Alan meta verilerinin arandığı bir ifade kaynağı.
Dönüş Değeri
Bir dizi dizi ya da yanlış. Dizi, sonuç kümesindeki her alan için bir diziden oluşur. Her alt dizinin aşağıdaki tabloda açıklandığı gibi anahtarları vardır. Alan meta verilerinin alınmasında hata olursa, false döner.
| Key | Description |
|---|---|
| Name | Alanın karşılık geldiği sütunun adı. |
| Türü | SQL türüne karşılık gelen sayısal değer. |
| Size | Karakter tipi alanlar için karakter sayısı (char(n), varchar(n), nchar(n), XML). İkili tipli alanlar için bayt sayısı (binary(n), varbinary(n), UDT). Diğer SQL Server veri türleri için NULL. |
| Hassasiyet | Değişken hassasiyeti türleri için hassasiyet (gerçek, sayısal, ondalık, datetime2, datetimeoffset ve time). Diğer SQL Server veri türleri için NULL. |
| Ölçek | Değişken ölçek türleri için ölçek (sayısal, ondalık, datetime2, datetimeoffset ve time). Diğer SQL Server veri türleri için NULL. |
| Null olabilir | Sütunun nullable olup olmadığını (SQLSRV_NULLABLE_YES), sütunun sıfırlanabilir olup olmadığını (SQLSRV_NULLABLE_NO) veya sütunun nullable olup olmadığını (SQLSRV_NULLABLE_UNKNOWN) gösteren sayılmış bir değer. |
Aşağıdaki tablo, her alt dizinin anahtarları hakkında daha fazla bilgi verir (bu türler hakkında daha fazla bilgi için SQL Server dokümantasyonuna bakınız):
| SQL Server 2008 veri tipi | Türü | Min/Max Hassasiyet | Min/Max Ölçeği | Size |
|---|---|---|---|---|
| bigint | SQL_BIGINT (-5) | 8 | ||
| ikili | SQL_BINARY (-2) | 0 <n< 8000 1 | ||
| bit (veri birimi) | SQL_BIT (-7) | |||
| char | SQL_CHAR (1) | 0 <n< 8000 1 | ||
| date | SQL_TYPE_DATE (91) | 10/10 | 0/0 | |
| datetime | SQL_TYPE_TIMESTAMP (93) | 23/23 | 3/3 | |
| datetime2 | SQL_TYPE_TIMESTAMP (93) | 19/27 | 0/7 | |
| datetimeoffset | SQL_SS_TIMESTAMPOFFSET (-155) | 26/34 | 0/7 | |
| decimal | SQL_DECIMAL (3) | 1/38 | 0/hassasiyet değeri | |
| float | SQL_FLOAT (6) | 4/8 | ||
| image | SQL_LONGVARBINARY (-4) | 2GB | ||
| int | SQL_INTEGER (4) | |||
| para | SQL_DECIMAL (3) | 19/19 | 4/4 | |
| nchar | SQL_WCHAR (-8) | 0 <n< 4000 1 | ||
| ntext | SQL_WLONGVARCHAR (-10) | 1GB | ||
| numeric | SQL_NUMERIC (2) | 1/38 | 0/hassasiyet değeri | |
| nvarchar | SQL_WVARCHAR (-9) | 0 <n< 4000 1 | ||
| real | SQL_REAL (7) | 4/4 | ||
| smalldatetime | SQL_TYPE_TIMESTAMP (93) | 16/16 | 0/0 | |
| smallint | SQL_SMALLINT (5) | 2 bayt | ||
| Küçük para | SQL_DECIMAL (3) | 10/10 | 4/4 | |
| sql_variant | SQL_SS_VARIANT (-150) | variable | ||
| text | SQL_LONGVARCHAR (-1) | 2GB | ||
| time | SQL_SS_TIME2 (-154) | 8/16 | 0/7 | |
| Tarih damgası | SQL_BINARY (-2) | 8 bayt | ||
| tinyint | SQL_TINYINT (-6) | 1 bayt | ||
| Udt | SQL_SS_UDT (-151) | variable | ||
| uniqueidentifier | SQL_GUID (-11) | 16 | ||
| varbinary | SQL_VARBINARY (-3) | 0 <n< 8000 1 | ||
| Varchar Belediyesi | SQL_VARCHAR (12) | 0 <n< 8000 1 | ||
| xml | SQL_SS_XML (-152) | 0 |
(1) Sıfır (0) maksimum boyutun izin verildiğini gösterir.
Nullable tuşu ya evet ya da hayır olabilir.
Example
Aşağıdaki örnek bir ifade kaynağı oluşturur, ardından alan meta verilerini alır ve gösterir. Örnekte SQL Server ve AdventureWorks veritabanının yerel bilgisayarda yüklü olduğu varsayılır. Örnek komut satırından çalıştırıldığında tüm çıkış konsola yazılır.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array("Database"=>"AdventureWorks");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Prepare the statement. */
$tsql = "SELECT ReviewerName, Comments FROM Production.ProductReview";
$stmt = sqlsrv_prepare( $conn, $tsql);
/* Get and display field metadata. */
foreach( sqlsrv_field_metadata( $stmt) as $fieldMetadata) {
foreach( $fieldMetadata as $name => $value) {
echo "$name: $value\n";
}
echo "\n";
}
/* Note: sqlsrv_field_metadata can be called on any statement
resource, pre- or post-execution. */
/* Free statement and connection resources. */
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Duyarlılık Veri Sınıflandırması Meta Verileri
DataClassification Kullanıcıların Microsoft SQL Server 2019'daki sqlsrv_field_metadatahassasiyet veri sınıflandırma meta verilerine erişim için 5.8.0 sürümünde yeni bir seçenek sunulmuştur; bu da Microsoft ODBC Driver 17.4.2 veya üzeri gerektirir.
Varsayılan olarak seçenek DataClassificationfalse, ancak , olarak ayarlandığında true, döndürülen sqlsrv_field_metadata dizi, varsa duyarlılık veri sınıflandırma meta verileriyle doldurulur.
Örneğin bir Hastalar tablosunu ele alalım:
CREATE TABLE Patients
[PatientId] int identity,
[SSN] char(11),
[FirstName] nvarchar(50),
[LastName] nvarchar(50),
[BirthDate] date)
SSN ve BirthDate sütunlarını aşağıda gösterildiği gibi sınıflandırabiliriz:
ADD SENSITIVITY CLASSIFICATION TO [Patients].SSN WITH (LABEL = 'Highly Confidential - secure privacy', INFORMATION_TYPE = 'Credentials')
ADD SENSITIVITY CLASSIFICATION TO [Patients].BirthDate WITH (LABEL = 'Confidential Personal Data', INFORMATION_TYPE = 'Birthdays')
Meta verilere erişmek için, aşağıdaki bölümde gösterildiği gibi çağırın sqlsrv_field_metadata :
$tableName = 'Patients';
$tsql = "SELECT * FROM $tableName";
$stmt = sqlsrv_prepare($conn, $tsql, array(), array('DataClassification' => true));
if (sqlsrv_execute($stmt)) {
$fieldmeta = sqlsrv_field_metadata($stmt);
foreach ($fieldmeta as $f) {
if (count($f['Data Classification']) > 0) {
echo $f['Name'] . ": \n";
print_r($f['Data Classification']);
}
}
}
Çıktı şu olacak:
SSN:
Array
(
[0] => Array
(
[Label] => Array
(
[name] => Highly Confidential - secure privacy
[id] =>
)
[Information Type] => Array
(
[name] => Credentials
[id] =>
)
)
)
BirthDate:
Array
(
[0] => Array
(
[Label] => Array
(
[name] => Confidential Personal Data
[id] =>
)
[Information Type] => Array
(
[name] => Birthdays
[id] =>
)
)
)
Yerine sqlsrv_preparekullanılırsasqlsrv_query, yukarıdaki snippet şu şekilde değiştirilebilir:
$tableName = 'Patients';
$tsql = "SELECT * FROM $tableName";
$stmt = sqlsrv_query($conn, $tsql, array(), array('DataClassification' => true));
$fieldmeta = sqlsrv_field_metadata($stmt);
foreach ($fieldmeta as $f) {
$jstr = json_encode($f);
echo $jstr . PHP_EOL;
}
Aşağıdaki JSON temsilinde görebileceğiniz gibi, veri sınıflandırma meta verileri şu sütunlarla ilişkilendiriliyorsa gösterilir:
{"Name":"PatientId","Type":4,"Size":null,"Precision":10,"Scale":null,"Nullable":0,"Data Classification":[]}
{"Name":"SSN","Type":1,"Size":11,"Precision":null,"Scale":null,"Nullable":1,"Data Classification":[{"Label":{"name":"Highly Confidential - secure privacy","id":""},"Information Type":{"name":"Credentials","id":""}}]}
{"Name":"FirstName","Type":-9,"Size":50,"Precision":null,"Scale":null,"Nullable":1,"Data Classification":[]}
{"Name":"LastName","Type":-9,"Size":50,"Precision":null,"Scale":null,"Nullable":1,"Data Classification":[]}
{"Name":"BirthDate","Type":91,"Size":null,"Precision":10,"Scale":0,"Nullable":1,"Data Classification":[{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""}}]}
Önceden tanımlanmış bir değer kümesi kullanılarak Duyarlılık Derecesi
5.9.0 sürümünden itibaren, PHP sürücüleri ODBC Driver 17.4.2 veya üzeri kullanıldığında sınıflandırma sıralaması alımı eklemiştir. Kullanıcı, herhangi bir veri sütununu sınıflandırırken rank ADD SENSITIVITY CLASSIFICATION tanımlayabilir.
Örneğin, kullanıcı NONE sırasıyla BirthDate ve SSN'ye ve LOW ataydığında, JSON temsili aşağıdaki şekilde gösterilir:
{"0":{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""},"rank":0},"rank":0}
{"0":{"Label":{"name":"Highly Confidential - secure privacy","id":""},"Information Type":{"name":"Credentials","id":""},"rank":10},"rank":10}
Duyarlılık sınıflandırmasında gösterildiği gibi, rütbelerin sayısal değerleri şunlardır:
0 for NONE
10 for LOW
20 for MEDIUM
30 for HIGH
40 for CRITICAL
Dolayısıyla, kullanıcı BirthDate sütununu sınıflandırırken yerine RANK=NONEtanımlarsa RANK=CRITICAL , sınıflandırma meta verisi şu olur:
array(7) {
["Name"]=>
string(9) "BirthDate"
["Type"]=>
int(91)
["Size"]=>
NULL
["Precision"]=>
int(10)
["Scale"]=>
int(0)
["Nullable"]=>
int(1)
["Data Classification"]=>
array(2) {
[0]=>
array(3) {
["Label"]=>
array(2) {
["name"]=>
string(26) "Confidential Personal Data"
["id"]=>
string(0) ""
}
["Information Type"]=>
array(2) {
["name"]=>
string(9) "Birthdays"
["id"]=>
string(0) ""
}
["rank"]=>
int(40)
}
["rank"]=>
int(40)
}
}
Güncellenmiş JSON temsili aşağıda gösterilmiştir:
{"0":{"Label":{"name":"Confidential Personal Data","id":""},"Information Type":{"name":"Birthdays","id":""},"rank":40},"rank":40}
Ayrıca Bkz.
SQLSRV Sürücü API'si Başvurusu