SQL Server
Detailed information on the SQL Server state store component
Component format
To setup SQL Server state store create a component of type state.sqlserver. See this guide on how to create and apply a state store configuration.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
  namespace: <NAMESPACE>
spec:
  type: state.sqlserver
  version: v1
  metadata:
  - name: connectionString
    value: <REPLACE-WITH-CONNECTION-STRING> # Required.
  - name: tableName
    value: <REPLACE-WITH-TABLE-NAME>  # Required.
  - name: keyType
    value: <REPLACE-WITH-KEY-TYPE>  # Optional. defaults to "string"
  - name: keyLength
    value: <KEY-LENGTH> # Optional. defaults to 200. Yo be used with "string" keyType
  - name: schema
    value: <SCHEMA> # Optional. defaults to "dbo"
  - name: indexedProperties
    value: <INDEXED-PROPERTIES> # Optional. List of IndexedProperties.
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here.If you wish to use Redis as an actor state store, append the following to the yaml.
  - name: actorStateStore
    value: "true"
Spec metadata fields
| Field | Required | Details | Example | 
|---|---|---|---|
| connectionString | Y | The connection string used to connect | "Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;" | 
| tableName | Y | The name of the table to use. Alpha-numeric with underscores | "table_name" | 
| keyType | N | The type of key used. Defaults to "string" | "string" | 
| keyLength | N | The max length of key. Used along with "string"keytype. Defaults to"200" | "200" | 
| schema | N | The schema to use. Defaults to "dbo" | "dapr","dbo" | 
| indexedProperties | N | List of IndexedProperties. | "[{"ColumnName": "column", "Property": "property", "Type": "type"}]" | 
| actorStateStore | N | Indicates that Dapr should configure this component for the actor state store (more information). | "true" | 
Create Azure SQL instance
Follow the instructions from the Azure documentation on how to create a SQL database. The database must be created before Dapr consumes it.
Note: SQL Server state store also supports SQL Server running on VMs.
In order to setup SQL Server as a state store, you need the following properties:
- Connection String: the SQL Server connection string. For example: server=localhost;user id=sa;password=your-password;port=1433;database=mydatabase;
- Schema: The database schema to use (default=dbo). Will be created if does not exist
- Table Name: The database table name. Will be created if does not exist
- Indexed Properties: Optional properties from json data which will be indexed and persisted as individual column
Create a dedicated user
When connecting with a dedicated user (not sa), these authorizations are required for the user - even when the user is owner of the desired database schema:
- CREATE TABLE
- CREATE TYPE
Related links
- Basic schema for a Dapr component
- Read this guide for instructions on configuring state store components
- State management building block
Last modified May 22, 2021: docs: clean up white noise (#1491) (fe1ab8eb)