docs-v2/content/flux/v0/write-data/sql/sql-server.md

120 lines
4.3 KiB
Markdown

---
title: Write to SQL Server
list_title: SQL Server
description: >
Use [`sql.to()`](/flux/v0/stdlib/sql/to/) with the `sqlserver` driver to
write data to SQL Server.
menu:
flux_v0:
name: SQL Server
parent: write-to-sql
identifier: write-sqlserver
weight: 101
related:
- /flux/v0/stdlib/sql/to/
list_code_example: |
```js
import "sql"
data
|> sql.to(
driverName: "sqlserver",
dataSourceName: "sqlserver://user:password@localhost:1433?database=examplebdb",
table: "Example.Table",
)
```
---
To write data to [Microsoft SQL Server](https://www.microsoft.com/sql-server/) with Flux:
1. Import the [`sql` package](/flux/v0/stdlib/sql/).
2. Pipe-forward data into [`sql.to()`](/flux/v0/stdlib/sql/to/) and provide
the following parameters:
- **driverName**: sqlserver
- **dataSourceName**: _See [data source name](#sql-server-data-source-name)_
- **table**: Table to write to
- **batchSize**: Number of parameters or columns that can be queued within
each call to `Exec` (default is `10000`)
```js
import "sql"
data
|> sql.to(
driverName: "sqlserver",
dataSourceName: "sqlserver://user:password@localhost:1433?database=examplebdb",
table: "Example.Table",
)
```
---
## SQL Server data source name
The `sqlserver` driver uses the following DSN syntaxes (also known as a **connection string**):
```
sqlserver://username:password@localhost:1433?database=examplebdb
server=localhost;user id=username;database=examplebdb;
server=localhost;user id=username;database=examplebdb;azure auth=ENV
server=localhost;user id=username;database=examplebdbr;azure tenant id=77e7d537;azure client id=58879ce8;azure client secret=0143356789
```
## SQL Server ADO authentication
Use one of the following methods to provide SQL Server authentication credentials as
[ActiveX Data Objects (ADO)](https://docs.microsoft.com/en-us/sql/ado/guide/ado-introduction?view=sql-server-ver15)
DSN parameters:
- [Retrieve authentication credentials from environment variables](#retrieve-authentication-credentials-from-environment-variables)
- [Retrieve authentication credentials from a file](#retrieve-authentication-credentials-from-a-file)
- [Specify authentication credentials in the DSN](#specify-authentication-credentials-in-the-dsn)
- [Use a Managed identity in an Azure VM](#use-a-managed-identity-in-an-azure-vm)
### Retrieve authentication credentials from environment variables
```
azure auth=ENV
```
### Retrieve authentication credentials from a file
{{% warn %}}
**InfluxDB Cloud** and **InfluxDB OSS** _**do not**_ have access to
the underlying file system and do not support reading credentials from a file.
To retrieve SQL Server credentials from a file, execute the query in the
[Flux REPL](/influxdb/v2/tools/flux-repl/) on your local machine.
{{% /warn %}}
```powershel
azure auth=C:\secure\azure.auth
```
### Specify authentication credentials in the DSN
```powershell
# Example of providing tenant ID, client ID, and client secret token
azure tenant id=77...;azure client id=58...;azure client secret=0cf123..
# Example of providing tenant ID, client ID, certificate path and certificate password
azure tenant id=77...;azure client id=58...;azure certificate path=C:\secure\...;azure certificate password=xY...
# Example of providing tenant ID, client ID, and Azure username and password
azure tenant id=77...;azure client id=58...;azure username=some@myorg;azure password=a1...
```
### Use a managed identity in an Azure VM
_For information about managed identities, see [Microsoft managed identities](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview)._
```
azure auth=MSI
```
## Flux to SQL Server data type conversion
`sql.to()` converts Flux data types to SQL Server data types.
| Flux data type | SQL Server data type |
| :-------------------------------------------- | :------------------- |
| [float](/flux/v0/data-types/basic/float/) | FLOAT |
| [int](/flux/v0/data-types/basic/int/) | BIGINT |
| [uint](/flux/v0/data-types/basic/uint/) | BIGINT |
| [string](/flux/v0/data-types/basic/string/) | VARCHAR(MAX |
| [bool](/flux/v0/data-types/basic/bool/) | BIT |
| [time](/flux/v0/data-types/basic/time/) | DATETIMEOFFSET |