質問: cmd.execute("@a", a) です。
回答: sql-serverの設定にもよるかと思うのですが、そのストアドプロシジャーが入っているデータベースは、(接続するユーザーの)デフォルトデータベースですか? もし、そうではないのなら、データベース名をvb上で指定してあげる必要があるのではないかと思うのですが。 cmd.commandtext = "(db名).test_pro" などです。